summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2010-05-12 13:41:32 +0000
committerAlan Conway <aconway@apache.org>2010-05-12 13:41:32 +0000
commitd806f791323dd101705c86db17e6956aafb026f3 (patch)
treecae3cf6aba6ffca59fa03871f1d7f5209b26f78e /cpp/src
parente4311a90427c8023487214d83956019afac06560 (diff)
downloadqpid-python-d806f791323dd101705c86db17e6956aafb026f3.tar.gz
Delay generating URL in cluster till global constructors to handle multi-protocol URLs.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@943488 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/qpid/cluster/Cluster.cpp23
-rw-r--r--cpp/src/tests/ConnectionOptions.h2
2 files changed, 14 insertions, 11 deletions
diff --git a/cpp/src/qpid/cluster/Cluster.cpp b/cpp/src/qpid/cluster/Cluster.cpp
index c3d83cfcac..7332102d08 100644
--- a/cpp/src/qpid/cluster/Cluster.cpp
+++ b/cpp/src/qpid/cluster/Cluster.cpp
@@ -245,7 +245,6 @@ Cluster::Cluster(const ClusterSettings& set, broker::Broker& b) :
poller(b.getPoller()),
cpg(*this),
name(settings.name),
- myUrl(settings.url.empty() ? Url() : Url(settings.url)),
self(cpg.self()),
clusterId(true),
expiryPolicy(new ExpiryPolicy(mcast, self, broker.getTimer())),
@@ -276,14 +275,6 @@ Cluster::Cluster(const ClusterSettings& set, broker::Broker& b) :
timer = new ClusterTimer(*this);
broker.setClusterTimer(std::auto_ptr<sys::Timer>(timer));
- mAgent = broker.getManagementAgent();
- if (mAgent != 0){
- _qmf::Package packageInit(mAgent);
- mgmtObject = new _qmf::Cluster (mAgent, this, &broker,name,myUrl.str());
- mAgent->addObject (mgmtObject);
- mgmtObject->set_status("JOINING");
- }
-
// Failover exchange provides membership updates to clients.
failoverExchange.reset(new FailoverExchange(this));
broker.getExchanges().registerExchange(failoverExchange);
@@ -312,8 +303,10 @@ Cluster::~Cluster() {
void Cluster::initialize() {
if (settings.quorum) quorum.start(poller);
- if (myUrl.empty())
+ if (settings.url.empty())
myUrl = Url::getIpAddressesUrl(broker.getPort(broker::Broker::TCP_TRANSPORT));
+ else
+ myUrl = settings.url;
broker.getKnownBrokers = boost::bind(&Cluster::getUrls, this);
broker.setExpiryPolicy(expiryPolicy);
dispatcher.start();
@@ -323,12 +316,22 @@ void Cluster::initialize() {
deliverFrameQueue.start();
mcast.start();
+ /// Create management object
+ mAgent = broker.getManagementAgent();
+ if (mAgent != 0){
+ _qmf::Package packageInit(mAgent);
+ mgmtObject = new _qmf::Cluster (mAgent, this, &broker,name,myUrl.str());
+ mAgent->addObject (mgmtObject);
+ mgmtObject->set_status("JOINING");
+ }
+
// Run initMapCompleted immediately to process the initial configuration.
assert(state == INIT);
initMapCompleted(*(Mutex::ScopedLock*)0); // Fake lock, single-threaded context.
// Add finalizer last for exception safety.
broker.addFinalizer(boost::bind(&Cluster::brokerShutdown, this));
+
}
// Called in connection thread to insert a client connection.
diff --git a/cpp/src/tests/ConnectionOptions.h b/cpp/src/tests/ConnectionOptions.h
index 6fd6c2c63f..fe945e9ddd 100644
--- a/cpp/src/tests/ConnectionOptions.h
+++ b/cpp/src/tests/ConnectionOptions.h
@@ -39,7 +39,7 @@ struct ConnectionOptions : public qpid::Options,
addOptions()
("broker,b", optValue(host, "HOST"), "Broker host to connect to")
("port,p", optValue(port, "PORT"), "Broker port to connect to")
- ("protocol,P", optValue(protocol, "tcp|rdma"), "Protocol to use for broker connection")
+ ("protocol,P", optValue(protocol, "tcp|ssl|rdma"), "Protocol to use for broker connection")
("virtualhost,v", optValue(virtualhost, "VHOST"), "virtual host")
("username", optValue(username, "USER"), "user name for broker log in.")
("password", optValue(password, "PASSWORD"), "password for broker log in.")