diff options
Diffstat (limited to 'cpp/lib/broker/Broker.cpp')
-rw-r--r-- | cpp/lib/broker/Broker.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/cpp/lib/broker/Broker.cpp b/cpp/lib/broker/Broker.cpp index f650452e33..335ce2b3a0 100644 --- a/cpp/lib/broker/Broker.cpp +++ b/cpp/lib/broker/Broker.cpp @@ -47,17 +47,13 @@ const std::string amq_match("amq.match"); Broker::Broker(const Configuration& conf) : config(conf), + store(createStore(conf)), queues(store.get()), timeout(30000), stagingThreshold(0), cleaner(&queues, timeout/10), factory(*this) { - if (config.getStore().empty()) - store.reset(new NullMessageStore(config.isTrace())); - else - store.reset(new MessageStoreModule(config.getStore())); - exchanges.declare(empty, DirectExchange::typeName); // Default exchange. exchanges.declare(amq_direct, DirectExchange::typeName); exchanges.declare(amq_topic, TopicExchange::typeName); @@ -84,6 +80,13 @@ Broker::shared_ptr Broker::create(int16_t port) Broker::shared_ptr Broker::create(const Configuration& config) { return Broker::shared_ptr(new Broker(config)); } + +MessageStore* Broker::createStore(const Configuration& config) { + if (config.getStore().empty()) + return new NullMessageStore(config.isTrace()); + else + return new MessageStoreModule(config.getStore()); +} void Broker::run() { getAcceptor().run(&factory); |