summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/client/SubscriptionManager.h
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2009-05-04 17:22:33 +0000
committerAlan Conway <aconway@apache.org>2009-05-04 17:22:33 +0000
commitcf3a9eb8cf578be00f0556ff5d93bfdf7c12aec8 (patch)
tree2b67937230ab3aaa1770f85125a77376d616dc05 /cpp/src/qpid/client/SubscriptionManager.h
parent2407f9f523b0eeeb8988e30c797fdb46039fc3d3 (diff)
downloadqpid-python-cf3a9eb8cf578be00f0556ff5d93bfdf7c12aec8.tar.gz
Applied PIMPL pattern to SubscriptionManager.
Cleaned up some sloppy #includes. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@771366 13f79535-47bb-0310-9956-ffa450edef68
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 */