summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/client/SubscriptionManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/client/SubscriptionManager.h')
-rw-r--r--cpp/src/qpid/client/SubscriptionManager.h44
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 */