From cd7956c780ef1d7829dc42e9802c1f3a060b1185 Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Fri, 8 Jun 2012 15:24:30 +0000 Subject: QPID-3603: Add ConfigurationObserver. Allows plugins to observe configuration events queue create/destroy, exchange create/destroy and bind/unbind. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1348114 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/broker/QueueRegistry.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'cpp/src/qpid/broker/QueueRegistry.cpp') diff --git a/cpp/src/qpid/broker/QueueRegistry.cpp b/cpp/src/qpid/broker/QueueRegistry.cpp index 236d5ae34c..6647774168 100644 --- a/cpp/src/qpid/broker/QueueRegistry.cpp +++ b/cpp/src/qpid/broker/QueueRegistry.cpp @@ -18,6 +18,7 @@ * under the License. * */ +#include "qpid/broker/Broker.h" #include "qpid/broker/Queue.h" #include "qpid/broker/QueueRegistry.h" #include "qpid/broker/QueueEvents.h" @@ -64,17 +65,22 @@ QueueRegistry::declare(const string& declareName, bool durable, //i.e. recovering a queue for which we already have a persistent record queue->configure(arguments); } + if (broker) broker->getConfigurationObservers().queueCreate(queue); queues[name] = queue; if (lastNode) queue->setLastNodeFailure(); - return std::pair(queue, true); } else { return std::pair(i->second, false); } } -void QueueRegistry::destroyLH (const string& name){ - queues.erase(name); +void QueueRegistry::destroyLH (const string& name) { + QueueMap::iterator i = queues.find(name); + if (i != queues.end()) { + Queue::shared_ptr q = i->second; + queues.erase(i); + if (broker) broker->getConfigurationObservers().queueDestroy(q); + } } void QueueRegistry::destroy (const string& name){ -- cgit v1.2.1