00001 #ifndef _broker_ExchangeRegistry_h
00002 #define _broker_ExchangeRegistry_h
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <map>
00026 #include "BrokerExchange.h"
00027 #include "qpid/sys/Monitor.h"
00028
00029 namespace qpid {
00030 namespace broker {
00031 struct UnknownExchangeTypeException{};
00032
00033 class ExchangeRegistry{
00034 typedef std::map<std::string, Exchange::shared_ptr> ExchangeMap;
00035 ExchangeMap exchanges;
00036 qpid::sys::Mutex lock;
00037 public:
00038 std::pair<Exchange::shared_ptr, bool> declare(const std::string& name, const std::string& type) throw(UnknownExchangeTypeException);
00039 void destroy(const std::string& name);
00040 Exchange::shared_ptr get(const std::string& name);
00041 Exchange::shared_ptr getDefault();
00042 };
00043 }
00044 }
00045
00046
00047 #endif