diff options
Diffstat (limited to 'cpp/src/qpid/broker')
| -rw-r--r-- | cpp/src/qpid/broker/Bridge.cpp | 7 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/Link.cpp | 12 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/LinkRegistry.cpp | 9 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/LinkRegistry.h | 7 |
4 files changed, 26 insertions, 9 deletions
diff --git a/cpp/src/qpid/broker/Bridge.cpp b/cpp/src/qpid/broker/Bridge.cpp index 5911d916ad..7fbbf4e2c4 100644 --- a/cpp/src/qpid/broker/Bridge.cpp +++ b/cpp/src/qpid/broker/Bridge.cpp @@ -60,8 +60,7 @@ Bridge::Bridge(Link* _link, framing::ChannelId _id, CancellationListener l, (agent, this, link, id, args.i_durable, args.i_src, args.i_dest, args.i_key, args.i_srcIsQueue, args.i_srcIsLocal, args.i_tag, args.i_excludes, args.i_dynamic, args.i_sync); - if (!args.i_durable) - agent->addObject(mgmtObject); + agent->addObject(mgmtObject); } QPID_LOG(debug, "Bridge created from " << args.i_src << " to " << args.i_dest); } @@ -167,10 +166,6 @@ void Bridge::destroy() void Bridge::setPersistenceId(uint64_t pId) const { - if (mgmtObject != 0 && persistenceId == 0) { - ManagementAgent* agent = link->getBroker()->getManagementAgent(); - agent->addObject (mgmtObject, pId); - } persistenceId = pId; } diff --git a/cpp/src/qpid/broker/Link.cpp b/cpp/src/qpid/broker/Link.cpp index 5a50d26c8c..e1091df724 100644 --- a/cpp/src/qpid/broker/Link.cpp +++ b/cpp/src/qpid/broker/Link.cpp @@ -30,6 +30,7 @@ #include "qpid/framing/enum.h" #include "qpid/framing/reply_exceptions.h" #include "qpid/broker/AclModule.h" +#include "qpid/sys/ClusterSafe.h" using namespace qpid::broker; using qpid::framing::Buffer; @@ -130,9 +131,12 @@ void Link::established () { stringstream addr; addr << host << ":" << port; - QPID_LOG (info, "Inter-broker link established to " << addr.str()); - agent->raiseEvent(_qmf::EventBrokerLinkUp(addr.str())); + + // Don't raise the management event in a cluster, other members wont't get this call. + if (!sys::isCluster()) + agent->raiseEvent(_qmf::EventBrokerLinkUp(addr.str())); + { Mutex::ScopedLock mutex(lock); setStateLH(STATE_OPERATIONAL); @@ -150,11 +154,13 @@ void Link::closed (int, std::string text) connection = 0; + // Don't raise the management event in a cluster, other members wont't get this call. if (state == STATE_OPERATIONAL) { stringstream addr; addr << host << ":" << port; QPID_LOG (warning, "Inter-broker link disconnected from " << addr.str()); - agent->raiseEvent(_qmf::EventBrokerLinkDown(addr.str())); + if (!sys::isCluster()) + agent->raiseEvent(_qmf::EventBrokerLinkDown(addr.str())); } for (Bridges::iterator i = active.begin(); i != active.end(); i++) { diff --git a/cpp/src/qpid/broker/LinkRegistry.cpp b/cpp/src/qpid/broker/LinkRegistry.cpp index ea14552cc1..82f1f0ea24 100644 --- a/cpp/src/qpid/broker/LinkRegistry.cpp +++ b/cpp/src/qpid/broker/LinkRegistry.cpp @@ -379,3 +379,12 @@ void LinkRegistry::setPassive(bool p) passive = p; //will activate or passivate links on maintenance visit } + +void LinkRegistry::eachLink(boost::function<void(boost::shared_ptr<Link>)> f) { + for (LinkMap::iterator i = links.begin(); i != links.end(); ++i) f(i->second); +} + +void LinkRegistry::eachBridge(boost::function<void(boost::shared_ptr<Bridge>)> f) { + for (BridgeMap::iterator i = bridges.begin(); i != bridges.end(); ++i) f(i->second); +} + diff --git a/cpp/src/qpid/broker/LinkRegistry.h b/cpp/src/qpid/broker/LinkRegistry.h index a1931920d7..4c97e4f9d8 100644 --- a/cpp/src/qpid/broker/LinkRegistry.h +++ b/cpp/src/qpid/broker/LinkRegistry.h @@ -31,6 +31,7 @@ #include "qpid/management/Manageable.h" #include <boost/shared_ptr.hpp> #include <boost/intrusive_ptr.hpp> +#include <boost/function.hpp> namespace qpid { namespace broker { @@ -148,6 +149,12 @@ namespace broker { * bridges won't therefore pull or push any messages. */ void setPassive(bool); + + + /** Iterate over each link in the registry. Used for cluster updates. */ + void eachLink(boost::function<void(boost::shared_ptr<Link>)> f); + /** Iterate over each bridge in the registry. Used for cluster updates. */ + void eachBridge(boost::function<void(boost::shared_ptr< Bridge>)> f); }; } } |
