diff options
Diffstat (limited to 'cpp/src/qpid/broker/QueueRegistry.h')
| -rw-r--r-- | cpp/src/qpid/broker/QueueRegistry.h | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/cpp/src/qpid/broker/QueueRegistry.h b/cpp/src/qpid/broker/QueueRegistry.h index bd53cba817..cec2a11e68 100644 --- a/cpp/src/qpid/broker/QueueRegistry.h +++ b/cpp/src/qpid/broker/QueueRegistry.h @@ -22,7 +22,7 @@ #define _QueueRegistry_ #include <map> -#include "qpid/sys/Monitor.h" +#include "qpid/sys/Mutex.h" #include "BrokerQueue.h" namespace qpid { @@ -36,7 +36,6 @@ namespace broker { * */ class QueueRegistry{ - public: QueueRegistry(MessageStore* const store = 0); ~QueueRegistry(); @@ -47,7 +46,7 @@ class QueueRegistry{ * @return The queue and a boolean flag which is true if the queue * was created by this declare call false if it already existed. */ - std::pair<Queue::shared_ptr, bool> declare(const string& name, bool durable = false, uint32_t autodelete = 0, + std::pair<Queue::shared_ptr, bool> declare(const string& name, bool durable = false, bool autodelete = false, const ConnectionToken* const owner = 0); /** @@ -63,6 +62,13 @@ class QueueRegistry{ * */ void destroy(const string& name); + template <class Test> void destroyIf(const string& name, Test test) + { + qpid::sys::Mutex::ScopedLock locker(lock); + if (test()) { + queues.erase(name); + } + } /** * Find the named queue. Return 0 if not found. @@ -79,8 +85,7 @@ class QueueRegistry{ */ MessageStore* const getStore() const; - - private: +private: typedef std::map<string, Queue::shared_ptr> QueueMap; QueueMap queues; qpid::sys::Mutex lock; |
