You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by as...@apache.org on 2009/08/07 03:53:50 UTC

svn commit: r801860 - in /qpid/trunk/qpid/cpp/src/qpid/broker: LinkRegistry.cpp LinkRegistry.h

Author: astitcher
Date: Fri Aug  7 01:53:50 2009
New Revision: 801860

URL: http://svn.apache.org/viewvc?rev=801860&view=rev
Log:
Change LinkRegistry to cancel its TimerTask in its destructor

Modified:
    qpid/trunk/qpid/cpp/src/qpid/broker/LinkRegistry.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/LinkRegistry.h

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/LinkRegistry.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/LinkRegistry.cpp?rev=801860&r1=801859&r2=801860&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/LinkRegistry.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/LinkRegistry.cpp Fri Aug  7 01:53:50 2009
@@ -49,10 +49,16 @@
 
 LinkRegistry::LinkRegistry (Broker* _broker) :
     broker(_broker), timer(&broker->getTimer()),
+    maintenanceTask(new Periodic(*this)),
     parent(0), store(0), passive(false), passiveChanged(false),
     realm(broker->getOptions().realm)
 {
-    timer->add (new Periodic(*this));
+    timer->add(maintenanceTask);
+}
+
+LinkRegistry::~LinkRegistry()
+{
+    maintenanceTask->cancel();
 }
 
 LinkRegistry::Periodic::Periodic (LinkRegistry& _links) :
@@ -61,7 +67,8 @@
 void LinkRegistry::Periodic::fire ()
 {
     links.periodicMaintenance ();
-    links.timer->add (new Periodic(links));
+    setupNextFire();
+    links.timer->add (this);
 }
 
 void LinkRegistry::periodicMaintenance ()

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/LinkRegistry.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/LinkRegistry.h?rev=801860&r1=801859&r2=801860&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/LinkRegistry.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/LinkRegistry.h Fri Aug  7 01:53:50 2009
@@ -30,6 +30,7 @@
 #include "qpid/sys/Timer.h"
 #include "qpid/management/Manageable.h"
 #include <boost/shared_ptr.hpp>
+#include <boost/intrusive_ptr.hpp>
 
 namespace qpid {
 namespace broker {
@@ -63,6 +64,7 @@
         qpid::sys::Mutex lock;
         Broker* broker;
         sys::Timer* timer;
+        boost::intrusive_ptr<qpid::sys::TimerTask> maintenanceTask;
         management::Manageable* parent;
         MessageStore* store;
         bool passive;
@@ -77,6 +79,8 @@
     public:
         LinkRegistry (); // Only used in store tests
         LinkRegistry (Broker* _broker);
+        ~LinkRegistry();
+
         std::pair<boost::shared_ptr<Link>, bool>
             declare(std::string& host,
                     uint16_t     port,



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org