summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/cluster/ClusterPlugin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/cluster/ClusterPlugin.cpp')
-rw-r--r--cpp/src/qpid/cluster/ClusterPlugin.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/cpp/src/qpid/cluster/ClusterPlugin.cpp b/cpp/src/qpid/cluster/ClusterPlugin.cpp
index 8457467196..14a666a1c6 100644
--- a/cpp/src/qpid/cluster/ClusterPlugin.cpp
+++ b/cpp/src/qpid/cluster/ClusterPlugin.cpp
@@ -34,6 +34,7 @@ namespace qpid {
namespace cluster {
using namespace std;
+using broker::Broker;
struct ClusterValues {
string name;
@@ -74,12 +75,14 @@ struct ClusterPlugin : public Plugin {
Options* getOptions() { return &options; }
void initialize(Plugin::Target& target) {
- broker::Broker* broker = dynamic_cast<broker::Broker*>(&target);
- if (!broker || values.name.empty()) return; // Only if --cluster-name option was specified.
+ if (values.name.empty()) return; // Only if --cluster-name option was specified.
+ Broker* broker = dynamic_cast<Broker*>(&target);
+ if (!broker) return;
cluster = new Cluster(values.name, values.getUrl(broker->getPort()), *broker);
broker->setConnectionFactory(
boost::shared_ptr<sys::ConnectionCodec::Factory>(
new ConnectionCodec::Factory(broker->getConnectionFactory(), *cluster)));
+ broker->getExchanges().registerExchange(cluster->getFailoverExchange());
}
void earlyInitialize(Plugin::Target&) {}