summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/Broker.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/broker/Broker.cpp')
-rw-r--r--cpp/src/qpid/broker/Broker.cpp26
1 files changed, 23 insertions, 3 deletions
diff --git a/cpp/src/qpid/broker/Broker.cpp b/cpp/src/qpid/broker/Broker.cpp
index 84c5703a16..44aeb482de 100644
--- a/cpp/src/qpid/broker/Broker.cpp
+++ b/cpp/src/qpid/broker/Broker.cpp
@@ -60,8 +60,10 @@ Broker::Options::Options(const std::string& name) :
connectionBacklog(10),
store(),
stagingThreshold(5000000),
- storeDir("/var"),
- storeAsync(false)
+ storeDir("/var"),
+ storeAsync(false),
+ enableMgmt(0),
+ mgmtPubInterval(10)
{
addOptions()
("port,p", optValue(port,"PORT"),
@@ -79,7 +81,11 @@ Broker::Options::Options(const std::string& name) :
("store-directory", optValue(storeDir,"DIR"),
"Store directory location for persistence.")
("store-async", optValue(storeAsync,"yes|no"),
- "Use async persistence storage - if store supports it, enable AIO 0-DIRECT.");
+ "Use async persistence storage - if store supports it, enable AIO 0-DIRECT.")
+ ("mgmt,m", optValue(enableMgmt,"yes|no"),
+ "Enable Management")
+ ("mgmt-pub-interval", optValue(mgmtPubInterval, "SECONDS"),
+ "Management Publish Interval");
}
const std::string empty;
@@ -87,6 +93,7 @@ const std::string amq_direct("amq.direct");
const std::string amq_topic("amq.topic");
const std::string amq_fanout("amq.fanout");
const std::string amq_match("amq.match");
+const std::string qpid_management("qpid.management");
Broker::Broker(const Broker::Options& conf) :
config(conf),
@@ -96,11 +103,24 @@ Broker::Broker(const Broker::Options& conf) :
factory(*this),
dtxManager(store.get())
{
+ if(conf.enableMgmt){
+ managementAgent = ManagementAgent::shared_ptr (new ManagementAgent (conf.mgmtPubInterval));
+ queues.setManagementAgent(managementAgent);
+ }
+
exchanges.declare(empty, DirectExchange::typeName); // Default exchange.
exchanges.declare(amq_direct, DirectExchange::typeName);
exchanges.declare(amq_topic, TopicExchange::typeName);
exchanges.declare(amq_fanout, FanOutExchange::typeName);
exchanges.declare(amq_match, HeadersExchange::typeName);
+
+ if(conf.enableMgmt) {
+ QPID_LOG(info, "Management enabled");
+ exchanges.declare(qpid_management, TopicExchange::typeName);
+ managementAgent->setExchange (exchanges.get (qpid_management));
+ }
+ else
+ QPID_LOG(info, "Management not enabled");
if(store.get()) {
store->init(conf.storeDir, conf.storeAsync);