diff options
Diffstat (limited to 'cpp/src/qpid/client/SubscriptionManager.h')
-rw-r--r-- | cpp/src/qpid/client/SubscriptionManager.h | 44 |
1 files changed, 21 insertions, 23 deletions
diff --git a/cpp/src/qpid/client/SubscriptionManager.h b/cpp/src/qpid/client/SubscriptionManager.h index 91ad2b6d56..eaff0975c5 100644 --- a/cpp/src/qpid/client/SubscriptionManager.h +++ b/cpp/src/qpid/client/SubscriptionManager.h @@ -21,22 +21,21 @@ * under the License. * */ -#include "qpid/sys/Mutex.h" -#include <qpid/client/Dispatcher.h> -#include <qpid/client/Completion.h> + #include <qpid/client/Session.h> -#include <qpid/client/AsyncSession.h> -#include <qpid/client/MessageListener.h> -#include <qpid/client/LocalQueue.h> #include <qpid/client/Subscription.h> #include <qpid/sys/Runnable.h> #include <qpid/client/ClientImportExport.h> -#include <set> -#include <sstream> +#include "qpid/client/MessageListener.h" +#include "qpid/client/LocalQueue.h" +#include <qpid/client/Handle.h> +#include <string> namespace qpid { namespace client { +class SubscriptionManagerImpl; + /** * A class to help create and manage subscriptions. * @@ -94,11 +93,14 @@ namespace client { * </ul> * */ -class SubscriptionManager : public sys::Runnable +class SubscriptionManager : public sys::Runnable, public Handle<SubscriptionManagerImpl> { public: /** Create a new SubscriptionManager associated with a session */ QPID_CLIENT_EXTERN SubscriptionManager(const Session& session); + QPID_CLIENT_EXTERN SubscriptionManager(const SubscriptionManager&); + QPID_CLIENT_EXTERN ~SubscriptionManager(); + QPID_CLIENT_EXTERN SubscriptionManager& operator=(const SubscriptionManager&); /** * Subscribe a MessagesListener to receive messages from queue. @@ -224,17 +226,17 @@ class SubscriptionManager : public sys::Runnable /** Set the default settings for subscribe() calls that don't * include a SubscriptionSettings parameter. */ - QPID_CLIENT_EXTERN void setDefaultSettings(const SubscriptionSettings& s) { defaultSettings = s; } + QPID_CLIENT_EXTERN void setDefaultSettings(const SubscriptionSettings& s); /** Get the default settings for subscribe() calls that don't * include a SubscriptionSettings parameter. */ - QPID_CLIENT_EXTERN const SubscriptionSettings& getDefaultSettings() const { return defaultSettings; } + QPID_CLIENT_EXTERN const SubscriptionSettings& getDefaultSettings() const; /** Get the default settings for subscribe() calls that don't * include a SubscriptionSettings parameter. */ - QPID_CLIENT_EXTERN SubscriptionSettings& getDefaultSettings() { return defaultSettings; } + QPID_CLIENT_EXTERN SubscriptionSettings& getDefaultSettings(); /** * Set the default flow control settings for subscribe() calls @@ -244,32 +246,28 @@ class SubscriptionManager : public sys::Runnable *@param bytes: byte credit. *@param window: if true use window-based flow control. */ - QPID_CLIENT_EXTERN void setFlowControl(uint32_t messages, uint32_t bytes, bool window=true) { - defaultSettings.flowControl = FlowControl(messages, bytes, window); - } + QPID_CLIENT_EXTERN void setFlowControl(uint32_t messages, uint32_t bytes, bool window=true); /** *Set the default accept-mode for subscribe() calls that don't *include a SubscriptionSettings parameter. */ - QPID_CLIENT_EXTERN void setAcceptMode(AcceptMode mode) { defaultSettings.acceptMode = mode; } + QPID_CLIENT_EXTERN void setAcceptMode(AcceptMode mode); /** * Set the default acquire-mode subscribe()s that don't specify SubscriptionSettings. */ - QPID_CLIENT_EXTERN void setAcquireMode(AcquireMode mode) { defaultSettings.acquireMode = mode; } + QPID_CLIENT_EXTERN void setAcquireMode(AcquireMode mode); QPID_CLIENT_EXTERN void registerFailoverHandler ( boost::function<void ()> fh ); QPID_CLIENT_EXTERN Session getSession() const; + SubscriptionManager(SubscriptionManagerImpl*); ///<@internal + private: - mutable sys::Mutex lock; - qpid::client::Dispatcher dispatcher; - qpid::client::AsyncSession session; - bool autoStop; - SubscriptionSettings defaultSettings; - std::map<std::string, Subscription> subscriptions; + typedef SubscriptionManagerImpl Impl; + friend class PrivateImplRef<SubscriptionManager>; }; /** AutoCancel cancels a subscription in its destructor */ |