00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _QueueRegistry_
00022 #define _QueueRegistry_
00023
00024 #include <map>
00025 #include "qpid/sys/Monitor.h"
00026 #include "BrokerQueue.h"
00027
00028 namespace qpid {
00029 namespace broker {
00030
00038 class QueueRegistry{
00039
00040 public:
00041 QueueRegistry(MessageStore* const store = 0);
00042 ~QueueRegistry();
00043
00050 std::pair<Queue::shared_ptr, bool> declare(const string& name, bool durable = false, uint32_t autodelete = 0,
00051 const ConnectionToken* const owner = 0);
00052
00065 void destroy(const string& name);
00066
00070 Queue::shared_ptr find(const string& name);
00071
00075 string generateName();
00076
00080 MessageStore* const getStore() const;
00081
00082
00083 private:
00084 typedef std::map<string, Queue::shared_ptr> QueueMap;
00085 QueueMap queues;
00086 qpid::sys::Mutex lock;
00087 int counter;
00088 MessageStore* const store;
00089 };
00090
00091
00092 }
00093 }
00094
00095
00096 #endif