From b19d20c0277ff20609f9f0774224accd5ff3e452 Mon Sep 17 00:00:00 2001 From: "Carl C. Trieloff" Date: Fri, 26 Oct 2007 02:37:54 +0000 Subject: - added patch from Tedd - QPID-660 git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@588478 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/broker/QueueRegistry.cpp | 48 +++++++++++++++++------------------ 1 file changed, 24 insertions(+), 24 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 927de4c079..6c87e5ff98 100644 --- a/cpp/src/qpid/broker/QueueRegistry.cpp +++ b/cpp/src/qpid/broker/QueueRegistry.cpp @@ -21,6 +21,7 @@ #include "QueueRegistry.h" #include "ManagementAgent.h" #include "ManagementObjectQueue.h" +#include "qpid/log/Statement.h" #include #include @@ -42,33 +43,32 @@ QueueRegistry::declare(const string& declareName, bool durable, QueueMap::iterator i = queues.find(name); if (i == queues.end()) { - Queue::shared_ptr queue(new Queue(name, autoDelete, durable ? store : 0, owner)); - queues[name] = queue; + Queue::shared_ptr queue(new Queue(name, autoDelete, durable ? store : 0, owner)); + queues[name] = queue; - if (managementAgent){ - ManagementObjectQueue::shared_ptr mgmtObject(new ManagementObjectQueue (name, durable, autoDelete)); + if (managementAgent){ + ManagementObjectQueue::shared_ptr mgmtObject(new ManagementObjectQueue (name, durable, autoDelete)); - queue->setMgmt (mgmtObject); - managementAgent->addObject(dynamic_pointer_cast(mgmtObject)); - } - - return std::pair(queue, true); + queue->setMgmt (mgmtObject); + managementAgent->addObject(dynamic_pointer_cast(mgmtObject)); + } + + return std::pair(queue, true); } else { - return std::pair(i->second, false); + return std::pair(i->second, false); } } void QueueRegistry::destroy(const string& name){ RWlock::ScopedWlock locker(lock); - if (managementAgent){ - ManagementObjectQueue::shared_ptr mgmtObject; - QueueMap::iterator i = queues.find(name); + ManagementObjectQueue::shared_ptr mgmtObject; + QueueMap::iterator i = queues.find(name); - if (i != queues.end()){ - mgmtObject = i->second->getMgmt (); - managementAgent->deleteObject (dynamic_pointer_cast(mgmtObject)); - } + if (i != queues.end()){ + mgmtObject = i->second->getMgmt (); + mgmtObject->resourceDestroy (); + } } queues.erase(name); @@ -79,20 +79,20 @@ Queue::shared_ptr QueueRegistry::find(const string& name){ QueueMap::iterator i = queues.find(name); if (i == queues.end()) { - return Queue::shared_ptr(); + return Queue::shared_ptr(); } else { - return i->second; + return i->second; } } string QueueRegistry::generateName(){ string name; do { - std::stringstream ss; - ss << "tmp_" << counter++; - name = ss.str(); - // Thread safety: Private function, only called with lock held - // so this is OK. + std::stringstream ss; + ss << "tmp_" << counter++; + name = ss.str(); + // Thread safety: Private function, only called with lock held + // so this is OK. } while(queues.find(name) != queues.end()); return name; } -- cgit v1.2.1