You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2009/05/20 17:17:33 UTC

svn commit: r776729 - in /qpid/trunk/qpid/cpp/src/qpid: broker/ExchangeRegistry.cpp broker/ExchangeRegistry.h xml/XmlExchange.cpp xml/XmlExchange.h xml/XmlExchangePlugin.cpp

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-subscribe@qpid.apache.org