Author: tross Date: Wed May 20 15:17:21 2009 New Revision: 776729 URL: http://svn.apache.org/viewvc?rev=776729&view=rev Log: Fixed a regression affecting plugin-exchanges. Plugin exchanges (i.e. the XML exchange) do not get the broker pointer and therefore can not register themselves with the management agent.
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.cpp qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.h qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchange.cpp qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchange.h qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchangePlugin.cpp Modified: qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.cpp URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.cpp?rev=776729&r1=776728&r2=776729&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.cpp (original) +++ qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.cpp Wed May 20 15:17:21 2009 @@ -60,7 +60,7 @@ if (i == factory.end()) { throw UnknownExchangeTypeException(); } else { - exchange = i->second(name, durable, args, parent); + exchange = i->second(name, durable, args, parent, broker); } } exchanges[name] = exchange; Modified: qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.h URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.h?rev=776729&r1=776728&r2=776729&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.h (original) +++ qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.h Wed May 20 15:17:21 2009 @@ -42,8 +42,8 @@ class ExchangeRegistry{ public: - typedef boost::function4<Exchange::shared_ptr, const std::string&, - bool, const qpid::framing::FieldTable&, qpid::management::Manageable*> FactoryFunction; + typedef boost::function5<Exchange::shared_ptr, const std::string&, + bool, const qpid::framing::FieldTable&, qpid::management::Manageable*, qpid::broker::Broker*> FactoryFunction; ExchangeRegistry (Broker* b = 0) : parent(0), broker(b) {} QPID_BROKER_EXTERN std::pair<Exchange::shared_ptr, bool> declare Modified: qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchange.cpp URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchange.cpp?rev=776729&r1=776728&r2=776729&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchange.cpp (original) +++ qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchange.cpp Wed May 20 15:17:21 2009 @@ -51,15 +51,15 @@ namespace broker { -XmlExchange::XmlExchange(const string& _name, Manageable* _parent) : Exchange(_name, _parent) + XmlExchange::XmlExchange(const string& _name, Manageable* _parent, Broker* b) : Exchange(_name, _parent, b) { if (mgmtExchange != 0) mgmtExchange->set_type (typeName); } XmlExchange::XmlExchange(const std::string& _name, bool _durable, - const FieldTable& _args, Manageable* _parent) : - Exchange(_name, _durable, _args, _parent) + const FieldTable& _args, Manageable* _parent, Broker* b) : + Exchange(_name, _durable, _args, _parent, b) { if (mgmtExchange != 0) mgmtExchange->set_type (typeName); Modified: qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchange.h URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchange.h?rev=776729&r1=776728&r2=776729&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchange.h (original) +++ qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchange.h Wed May 20 15:17:21 2009 @@ -37,6 +37,7 @@ namespace qpid { namespace broker { +class Broker; class XmlExchange : public virtual Exchange { typedef boost::shared_ptr<XQQuery> Query; @@ -64,9 +65,9 @@ public: static const std::string typeName; - XmlExchange(const std::string& name, management::Manageable* parent = 0); + XmlExchange(const std::string& name, management::Manageable* parent = 0, Broker* broker = 0); XmlExchange(const string& _name, bool _durable, - const qpid::framing::FieldTable& _args, management::Manageable* parent = 0); + const qpid::framing::FieldTable& _args, management::Manageable* parent = 0, Broker* broker = 0); virtual std::string getType() const { return typeName; } Modified: qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchangePlugin.cpp URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchangePlugin.cpp?rev=776729&r1=776728&r2=776729&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchangePlugin.cpp (original) +++ qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchangePlugin.cpp Wed May 20 15:17:21 2009 @@ -31,13 +31,15 @@ namespace broker { // ACL uses the acl namespace here - should I? using namespace std; +class Broker; Exchange::shared_ptr create(const std::string& name, bool durable, const framing::FieldTable& args, - management::Manageable* parent) + management::Manageable* parent, + Broker* broker) { - Exchange::shared_ptr e(new XmlExchange(name, durable, args, parent)); - return e; + Exchange::shared_ptr e(new XmlExchange(name, durable, args, parent, broker)); + return e; } --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org