summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2009-10-08 18:28:42 +0000
committerAlan Conway <aconway@apache.org>2009-10-08 18:28:42 +0000
commit550ee85ea3ac31cedec277b3f4af0b24f5385e77 (patch)
tree9d1cc8cf4289aab49c40ad09127226f37aa5718b /cpp/src/qpid/broker
parentbdefa56cae58cdbef08a6c9023a82368e1e9d322 (diff)
downloadqpid-python-550ee85ea3ac31cedec277b3f4af0b24f5385e77.tar.gz
Cluster shuts down broker via SignalHandler to fix memory errors on exit.
The SignalHandler holds a global reference to the broker which needs to be reset otherwise there are problems when the broker by a global destructor. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@823258 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker')
-rw-r--r--cpp/src/qpid/broker/SignalHandler.cpp2
-rw-r--r--cpp/src/qpid/broker/SignalHandler.h3
2 files changed, 5 insertions, 0 deletions
diff --git a/cpp/src/qpid/broker/SignalHandler.cpp b/cpp/src/qpid/broker/SignalHandler.cpp
index f4a3822554..b565cfd419 100644
--- a/cpp/src/qpid/broker/SignalHandler.cpp
+++ b/cpp/src/qpid/broker/SignalHandler.cpp
@@ -38,6 +38,8 @@ void SignalHandler::setBroker(const boost::intrusive_ptr<Broker>& b) {
signal(SIGCHLD,SIG_IGN);
}
+void SignalHandler::shutdown() { shutdownHandler(0); }
+
void SignalHandler::shutdownHandler(int) {
if (broker.get()) {
broker->shutdown();
diff --git a/cpp/src/qpid/broker/SignalHandler.h b/cpp/src/qpid/broker/SignalHandler.h
index d2cdfae07c..bbe831b61d 100644
--- a/cpp/src/qpid/broker/SignalHandler.h
+++ b/cpp/src/qpid/broker/SignalHandler.h
@@ -38,6 +38,9 @@ class SignalHandler
/** Set the broker to be shutdown on signals */
static void setBroker(const boost::intrusive_ptr<Broker>& broker);
+ /** Initiate shut-down of broker */
+ static void shutdown();
+
private:
static void shutdownHandler(int);
static boost::intrusive_ptr<Broker> broker;