diff options
| author | Gordon Sim <gsim@apache.org> | 2009-02-25 17:00:54 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2009-02-25 17:00:54 +0000 |
| commit | 0f84aef7e4d42535937ce8b649ac891ffad87676 (patch) | |
| tree | 38d5a39927b60bef7447d3f0067439b0bc060836 /cpp/src/qpid/replication | |
| parent | ecde9757abc26697220e00d3306a11919f2fe2ca (diff) | |
| download | qpid-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.cpp | 2 | ||||
| -rw-r--r-- | cpp/src/qpid/replication/ReplicatingEventListener.h | 1 |
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, |
