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]

Reply via email to