summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/replication
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2009-02-25 17:00:54 +0000
committerGordon Sim <gsim@apache.org>2009-02-25 17:00:54 +0000
commit0f84aef7e4d42535937ce8b649ac891ffad87676 (patch)
tree38d5a39927b60bef7447d3f0067439b0bc060836 /cpp/src/qpid/replication
parentecde9757abc26697220e00d3306a11919f2fe2ca (diff)
downloadqpid-python-0f84aef7e4d42535937ce8b649ac891ffad87676.tar.gz
Need to register finalizer so that we can release the shared pointer to the queue and have the queue deleted before the management agents deletes the underlying qmf object.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@747861 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/replication')
-rw-r--r--cpp/src/qpid/replication/ReplicatingEventListener.cpp2
-rw-r--r--cpp/src/qpid/replication/ReplicatingEventListener.h1
2 files changed, 3 insertions, 0 deletions
diff --git a/cpp/src/qpid/replication/ReplicatingEventListener.cpp b/cpp/src/qpid/replication/ReplicatingEventListener.cpp
index 2d8af3b052..8aa47999cc 100644
--- a/cpp/src/qpid/replication/ReplicatingEventListener.cpp
+++ b/cpp/src/qpid/replication/ReplicatingEventListener.cpp
@@ -131,6 +131,7 @@ void ReplicatingEventListener::initialize(Plugin::Target& target)
{
Broker* broker = dynamic_cast<broker::Broker*>(&target);
if (broker && !options.queue.empty()) {
+ broker->addFinalizer(boost::bind(&ReplicatingEventListener::shutdown, this));
if (options.createQueue) {
queue = broker->getQueues().declare(options.queue).first;
} else {
@@ -147,6 +148,7 @@ void ReplicatingEventListener::initialize(Plugin::Target& target)
}
void ReplicatingEventListener::earlyInitialize(Target&) {}
+void ReplicatingEventListener::shutdown() { queue.reset(); }
ReplicatingEventListener::PluginOptions::PluginOptions() : Options("Queue Replication Options"),
name("replicator"),
diff --git a/cpp/src/qpid/replication/ReplicatingEventListener.h b/cpp/src/qpid/replication/ReplicatingEventListener.h
index 7616c7ac8a..d302755704 100644
--- a/cpp/src/qpid/replication/ReplicatingEventListener.h
+++ b/cpp/src/qpid/replication/ReplicatingEventListener.h
@@ -62,6 +62,7 @@ class ReplicatingEventListener : public Plugin
void deliverDequeueMessage(const qpid::broker::QueuedMessage& enqueued);
void deliverEnqueueMessage(const qpid::broker::QueuedMessage& enqueued);
+ void shutdown();
boost::intrusive_ptr<qpid::broker::Message> createMessage(const qpid::framing::FieldTable& headers);
boost::intrusive_ptr<qpid::broker::Message> cloneMessage(qpid::broker::Queue& queue,