diff options
Diffstat (limited to 'cpp/src/qpid/broker/LinkRegistry.cpp')
| -rw-r--r-- | cpp/src/qpid/broker/LinkRegistry.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/cpp/src/qpid/broker/LinkRegistry.cpp b/cpp/src/qpid/broker/LinkRegistry.cpp index c70392eb23..fc7b88a04a 100644 --- a/cpp/src/qpid/broker/LinkRegistry.cpp +++ b/cpp/src/qpid/broker/LinkRegistry.cpp @@ -49,10 +49,16 @@ LinkRegistry::LinkRegistry () : 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 @@ LinkRegistry::Periodic::Periodic (LinkRegistry& _links) : void LinkRegistry::Periodic::fire () { links.periodicMaintenance (); - links.timer->add (new Periodic(links)); + setupNextFire(); + links.timer->add (this); } void LinkRegistry::periodicMaintenance () |
