summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2012-05-14 15:55:03 +0000
committerAlan Conway <aconway@apache.org>2012-05-14 15:55:03 +0000
commit5bf57c21ca1e54eed79645b331dbff99f5b36bf7 (patch)
tree5f6666a59c42bfa7b8a2475d80b3aa6bc8e807e6 /cpp/src
parent0bc425b7dfd98d5467b3d10aecae8b48b8861701 (diff)
downloadqpid-python-5bf57c21ca1e54eed79645b331dbff99f5b36bf7.tar.gz
QPID-3603: Add finalizer for HaPlugin, fix hang on exit not responding to kill -TERM.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1338264 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/qpid/ha/HaPlugin.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/cpp/src/qpid/ha/HaPlugin.cpp b/cpp/src/qpid/ha/HaPlugin.cpp
index 4da3b0d7d2..24977775bb 100644
--- a/cpp/src/qpid/ha/HaPlugin.cpp
+++ b/cpp/src/qpid/ha/HaPlugin.cpp
@@ -20,7 +20,7 @@
#include "qpid/Plugin.h"
#include "qpid/Options.h"
#include "qpid/broker/Broker.h"
-
+#include <boost/bind.hpp>
namespace qpid {
namespace ha {
@@ -66,7 +66,14 @@ struct HaPlugin : public Plugin {
void initialize(Plugin::Target& target) {
broker::Broker* broker = dynamic_cast<broker::Broker*>(&target);
- if (broker) haBroker.reset(new ha::HaBroker(*broker, settings));
+ if (broker) {
+ haBroker.reset(new ha::HaBroker(*broker, settings));
+ broker->addFinalizer(boost::bind(&HaPlugin::finalize, this));
+ }
+ }
+
+ void finalize() {
+ haBroker.reset();
}
};