diff options
author | Alan Conway <aconway@apache.org> | 2008-02-18 21:54:02 +0000 |
---|---|---|
committer | Alan Conway <aconway@apache.org> | 2008-02-18 21:54:02 +0000 |
commit | c612a6c6200fd9a8f9830cbad062b30b465d3dfe (patch) | |
tree | fd427336d51e5c091529eb53743592294f7748be /cpp/src/qpid/client/ExecutionHandler.cpp | |
parent | 3966d8be198296525a87a6bd88a42c4bb4f20d03 (diff) | |
download | qpid-python-c612a6c6200fd9a8f9830cbad062b30b465d3dfe.tar.gz |
Fixed race condition in the examples: when a listener program prints
its "ready" message, the commands it has sent to the broker may not yet
be complete. This results in sporadic lost messages if the producer is
started immediately (e.g. by a script.)
- Added Session::sync(), wait till all commands to date have completed.
- Call sync() before printing "ready" in listener example programs
- Removed sleep from verify script
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@628875 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/client/ExecutionHandler.cpp')
-rw-r--r-- | cpp/src/qpid/client/ExecutionHandler.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/cpp/src/qpid/client/ExecutionHandler.cpp b/cpp/src/qpid/client/ExecutionHandler.cpp index ba3cdce636..afdd13c9e9 100644 --- a/cpp/src/qpid/client/ExecutionHandler.cpp +++ b/cpp/src/qpid/client/ExecutionHandler.cpp @@ -26,6 +26,8 @@ #include "qpid/framing/AMQP_HighestVersion.h" #include "qpid/framing/all_method_bodies.h" #include "qpid/framing/ServerInvoker.h" +#include "qpid/client/FutureCompletion.h" +#include <boost/bind.hpp> using namespace qpid::client; using namespace qpid::framing; @@ -252,3 +254,14 @@ void ExecutionHandler::setCompletionListener(boost::function<void()> l) { completionListener = l; } + + +void ExecutionHandler::syncWait(const SequenceNumber& id) { + syncTo(id); + FutureCompletion fc; + completion.listenForCompletion( + id, boost::bind(&FutureCompletion::completed, &fc) + ); + fc.waitForCompletion(); + assert(isCompleteUpTo(id)); +} |