Author: gsim
Date: Mon Jul 9 12:13:52 2012
New Revision: 1359099
URL: http://svn.apache.org/viewvc?rev=1359099&view=rev
Log:
QPID-3757: clean up demux when subscription manager is destroyed
Modified:
qpid/trunk/qpid/cpp/src/qpid/client/SubscriptionManagerImpl.cpp
qpid/trunk/qpid/cpp/src/qpid/client/SubscriptionManagerImpl.h
Modified: qpid/trunk/qpid/cpp/src/qpid/client/SubscriptionManagerImpl.cpp
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/client/SubscriptionManagerImpl.cpp?rev=1359099&r1=1359098&r2=1359099&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/client/SubscriptionManagerImpl.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/client/SubscriptionManagerImpl.cpp Mon Jul 9
12:13:52 2012
@@ -39,6 +39,16 @@ SubscriptionManagerImpl::SubscriptionMan
: dispatcher(s), session(s), autoStop(true)
{}
+SubscriptionManagerImpl::~SubscriptionManagerImpl()
+{
+ sys::Mutex::ScopedLock l(lock);
+ for (std::map<std::string, Subscription>::iterator i =
subscriptions.begin(); i != subscriptions.end(); ++i) {
+ boost::intrusive_ptr<SubscriptionImpl> s =
PrivateImplRef<Subscription>::get(i->second);
+ if (s) s->cancelDiversion();
+ }
+ subscriptions.clear();
+}
+
Subscription SubscriptionManagerImpl::subscribe(
MessageListener& listener, const std::string& q, const
SubscriptionSettings& ss, const std::string& n)
{
Modified: qpid/trunk/qpid/cpp/src/qpid/client/SubscriptionManagerImpl.h
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/client/SubscriptionManagerImpl.h?rev=1359099&r1=1359098&r2=1359099&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/client/SubscriptionManagerImpl.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/client/SubscriptionManagerImpl.h Mon Jul 9
12:13:52 2012
@@ -99,7 +99,8 @@ class SubscriptionManagerImpl : public s
public:
/** Create a new SubscriptionManagerImpl associated with a session */
SubscriptionManagerImpl(const Session& session);
-
+ ~SubscriptionManagerImpl();
+
/**
* Subscribe a MessagesListener to receive messages from queue.
*
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]