summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/client/SubscriptionManager.h
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2008-07-01 18:01:11 +0000
committerAlan Conway <aconway@apache.org>2008-07-01 18:01:11 +0000
commitb010894ebe6c468fef0c14ad869b80ef336ab11f (patch)
tree87fd021e862ad21abffc9457711f066651e67418 /cpp/src/qpid/client/SubscriptionManager.h
parent4db79de7e806ceba3a243abef9847f15fc41cc40 (diff)
downloadqpid-python-b010894ebe6c468fef0c14ad869b80ef336ab11f.tar.gz
Added timeout to SubscriptionManager::get(), LocalQueue::get() and BlockingQueue::get()
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@673158 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/client/SubscriptionManager.h')
-rw-r--r--cpp/src/qpid/client/SubscriptionManager.h19
1 files changed, 16 insertions, 3 deletions
diff --git a/cpp/src/qpid/client/SubscriptionManager.h b/cpp/src/qpid/client/SubscriptionManager.h
index 0aa55099f5..3dad15fd29 100644
--- a/cpp/src/qpid/client/SubscriptionManager.h
+++ b/cpp/src/qpid/client/SubscriptionManager.h
@@ -122,10 +122,14 @@ class SubscriptionManager : public sys::Runnable
const std::string& queue,
const std::string& tag=std::string());
- /**
- * Get a single message from a queue.
+
+ /** Get a single message from a queue.
+ *@param result is set to the message from the queue.
+ *@
+ *@param timeout wait up this timeout for a message to appear.
+ *@return true if result was set, false if no message available after timeout.
*/
- Message get(const std::string& queue);
+ bool get(Message& result, const std::string& queue, sys::Duration timeout=0);
/** Cancel a subscription. */
void cancel(const std::string tag);
@@ -191,6 +195,15 @@ class SubscriptionManager : public sys::Runnable
AckPolicy& getAckPolicy();
};
+/** AutoCancel cancels a subscription in its destructor */
+class AutoCancel {
+ public:
+ AutoCancel(SubscriptionManager& sm_, const std::string& tag_) : sm(sm_), tag(tag_) {}
+ ~AutoCancel() { sm.cancel(tag); }
+ private:
+ SubscriptionManager& sm;
+ std::string tag;
+};
}} // namespace qpid::client