diff options
author | Alan Conway <aconway@apache.org> | 2008-07-01 18:01:11 +0000 |
---|---|---|
committer | Alan Conway <aconway@apache.org> | 2008-07-01 18:01:11 +0000 |
commit | b010894ebe6c468fef0c14ad869b80ef336ab11f (patch) | |
tree | 87fd021e862ad21abffc9457711f066651e67418 /cpp/src/qpid/client/SubscriptionManager.h | |
parent | 4db79de7e806ceba3a243abef9847f15fc41cc40 (diff) | |
download | qpid-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.h | 19 |
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 |