summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/client/SubscriptionManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/client/SubscriptionManager.cpp')
-rw-r--r--cpp/src/qpid/client/SubscriptionManager.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/cpp/src/qpid/client/SubscriptionManager.cpp b/cpp/src/qpid/client/SubscriptionManager.cpp
index 324b11e1df..9bb75f9a49 100644
--- a/cpp/src/qpid/client/SubscriptionManager.cpp
+++ b/cpp/src/qpid/client/SubscriptionManager.cpp
@@ -129,10 +129,13 @@ void SubscriptionManager::stop()
dispatcher.stop();
}
-Message SubscriptionManager::get(const std::string& queue) {
+bool SubscriptionManager::get(Message& result, const std::string& queue, sys::Duration timeout) {
LocalQueue lq;
- subscribe(lq, queue, FlowControl::messageCredit(1), framing::Uuid(true).str());
- return lq.get();
+ std::string unique = framing::Uuid(true).str();
+ subscribe(lq, queue, FlowControl::messageCredit(1), unique);
+ AutoCancel ac(*this, unique);
+ sync(session).messageFlush(unique);
+ return lq.get(result, timeout);
}
}} // namespace qpid::client