diff options
author | Alan Conway <aconway@apache.org> | 2010-05-12 13:41:32 +0000 |
---|---|---|
committer | Alan Conway <aconway@apache.org> | 2010-05-12 13:41:32 +0000 |
commit | d806f791323dd101705c86db17e6956aafb026f3 (patch) | |
tree | cae3cf6aba6ffca59fa03871f1d7f5209b26f78e /cpp | |
parent | e4311a90427c8023487214d83956019afac06560 (diff) | |
download | qpid-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')
-rw-r--r-- | cpp/src/qpid/cluster/Cluster.cpp | 23 | ||||
-rw-r--r-- | cpp/src/tests/ConnectionOptions.h | 2 |
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.") |