From 776a1c00abbbceac0dadcd1e2bf7c7c942967853 Mon Sep 17 00:00:00 2001 From: Andrew Stitcher Date: Fri, 7 Aug 2009 01:53:56 +0000 Subject: Change QueueCleaner so that it cancels any outstanding TimerTask on destruction git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@801861 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/broker/LinkRegistry.cpp | 2 +- cpp/src/qpid/broker/QueueCleaner.cpp | 5 +++++ cpp/src/qpid/broker/QueueCleaner.h | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) (limited to 'cpp') diff --git a/cpp/src/qpid/broker/LinkRegistry.cpp b/cpp/src/qpid/broker/LinkRegistry.cpp index fc7b88a04a..793ffd8d2e 100644 --- a/cpp/src/qpid/broker/LinkRegistry.cpp +++ b/cpp/src/qpid/broker/LinkRegistry.cpp @@ -68,7 +68,7 @@ void LinkRegistry::Periodic::fire () { links.periodicMaintenance (); setupNextFire(); - links.timer->add (this); + links.timer->add(this); } void LinkRegistry::periodicMaintenance () diff --git a/cpp/src/qpid/broker/QueueCleaner.cpp b/cpp/src/qpid/broker/QueueCleaner.cpp index 83f3f83520..f21950730d 100644 --- a/cpp/src/qpid/broker/QueueCleaner.cpp +++ b/cpp/src/qpid/broker/QueueCleaner.cpp @@ -28,6 +28,11 @@ namespace broker { QueueCleaner::QueueCleaner(QueueRegistry& q, sys::Timer& t) : queues(q), timer(t) {} +QueueCleaner::~QueueCleaner() +{ + task->cancel(); +} + void QueueCleaner::start(qpid::sys::Duration p) { task = new Task(*this, p); diff --git a/cpp/src/qpid/broker/QueueCleaner.h b/cpp/src/qpid/broker/QueueCleaner.h index c351cadd8a..11c2d180ac 100644 --- a/cpp/src/qpid/broker/QueueCleaner.h +++ b/cpp/src/qpid/broker/QueueCleaner.h @@ -36,6 +36,7 @@ class QueueCleaner { public: QPID_BROKER_EXTERN QueueCleaner(QueueRegistry& queues, sys::Timer& timer); + QPID_BROKER_EXTERN ~QueueCleaner(); QPID_BROKER_EXTERN void start(qpid::sys::Duration period); private: class Task : public sys::TimerTask -- cgit v1.2.1