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/08/25 18:48:04 UTC

svn commit: r807712 - in /qpid/trunk/qpid: cpp/src/qpid/broker/Exchange.cpp cpp/src/qpid/broker/Exchange.h cpp/src/tests/cli_tests.py python/commands/qpid-config specs/management-schema.xml

Author: tross
Date: Tue Aug 25 16:48:03 2009
New Revision: 807712

URL: http://svn.apache.org/viewvc?rev=807712&view=rev
Log:
Added management visibility into the alternate exchange and auto-delete attributes
of an exchange.

Note that auto-delete is not implemented for exchanges.

Modified:
    qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.h
    qpid/trunk/qpid/cpp/src/tests/cli_tests.py
    qpid/trunk/qpid/python/commands/qpid-config
    qpid/trunk/qpid/specs/management-schema.xml

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.cpp?rev=807712&r1=807711&r2=807712&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.cpp Tue Aug 25 16:48:03 2009
@@ -91,7 +91,9 @@
         ManagementAgent* agent = broker->getManagementAgent();
         if (agent != 0)
         {
-            mgmtExchange = new _qmf::Exchange (agent, this, parent, _name, durable);
+            mgmtExchange = new _qmf::Exchange (agent, this, parent, _name);
+            mgmtExchange->set_durable(durable);
+            mgmtExchange->set_autoDelete(false);
             agent->addObject (mgmtExchange);
         }
     }
@@ -109,7 +111,9 @@
         ManagementAgent* agent = broker->getManagementAgent();
         if (agent != 0)
         {
-            mgmtExchange = new _qmf::Exchange (agent, this, parent, _name, durable);
+            mgmtExchange = new _qmf::Exchange (agent, this, parent, _name);
+            mgmtExchange->set_durable(durable);
+            mgmtExchange->set_autoDelete(false);
             mgmtExchange->set_arguments(args);
             if (!durable) {
                 if (name.empty()) {
@@ -139,6 +143,17 @@
         mgmtExchange->resourceDestroy ();
 }
 
+void Exchange::setAlternate(Exchange::shared_ptr _alternate)
+{
+    alternate = _alternate;
+    if (mgmtExchange != 0) {
+        if (alternate.get() != 0)
+            mgmtExchange->set_altExchange(alternate->GetManagementObject()->getObjectId());
+        else
+            mgmtExchange->clr_altExchange();
+    }
+}
+
 void Exchange::setPersistenceId(uint64_t id) const
 {
     if (mgmtExchange != 0 && persistenceId == 0)

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.h?rev=807712&r1=807711&r2=807712&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.h Tue Aug 25 16:48:03 2009
@@ -132,7 +132,7 @@
     qpid::framing::FieldTable& getArgs() { return args; }
 
     Exchange::shared_ptr getAlternate() { return alternate; }
-    void setAlternate(Exchange::shared_ptr _alternate) { alternate = _alternate; }
+    void setAlternate(Exchange::shared_ptr _alternate);
     void incAlternateUsers() { alternateUsers++; }
     void decAlternateUsers() { alternateUsers--; }
     bool inUseAsAlternate() { return alternateUsers > 0; }

Modified: qpid/trunk/qpid/cpp/src/tests/cli_tests.py
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/cli_tests.py?rev=807712&r1=807711&r2=807712&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/cli_tests.py (original)
+++ qpid/trunk/qpid/cpp/src/tests/cli_tests.py Tue Aug 25 16:48:03 2009
@@ -123,6 +123,28 @@
                 found = True
         self.assertEqual(found, False)
 
+    def test_qpid_config_altex(self):
+        self.startQmf();
+        qmf = self.qmf
+        exName = "testalt"
+        altName = "amq.direct"
+
+        ret = os.system(self.command(" add exchange topic %s --alternate-exchange=%s" % (exName, altName)))
+        self.assertEqual(ret, 0)
+
+        exchanges = qmf.getObjects(_class="exchange")
+        found = False
+        for exchange in exchanges:
+            if exchange.name == altName:
+                self.assertEqual(exchange.altExchange, None)
+
+            if exchange.name == exName:
+                found = True
+                if not exchange.altExchange:
+                    self.fail("Alternate exchange not set")
+                self.assertEqual(exchange._altExchange_.name, altName)
+        self.assertEqual(found, True)
+
     def test_qpid_route(self):
         self.startQmf();
         qmf = self.qmf

Modified: qpid/trunk/qpid/python/commands/qpid-config
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/python/commands/qpid-config?rev=807712&r1=807711&r2=807712&view=diff
==============================================================================
--- qpid/trunk/qpid/python/commands/qpid-config (original)
+++ qpid/trunk/qpid/python/commands/qpid-config Tue Aug 25 16:48:03 2009
@@ -190,6 +190,8 @@
                 if ex.durable:    print "--durable",
                 if MSG_SEQUENCE in args and args[MSG_SEQUENCE] == 1: print "--sequence",
                 if IVE in args and args[IVE] == 1: print "--ive",
+                if ex.altExchange:
+                    print "--alternate-exchange=%s" % ex._altExchange_.name,
                 print
 
     def ExchangeListRecurse (self, filter):

Modified: qpid/trunk/qpid/specs/management-schema.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/specs/management-schema.xml?rev=807712&r1=807711&r2=807712&view=diff
==============================================================================
--- qpid/trunk/qpid/specs/management-schema.xml (original)
+++ qpid/trunk/qpid/specs/management-schema.xml Tue Aug 25 16:48:03 2009
@@ -164,11 +164,13 @@
   ===============================================================
   -->
   <class name="Exchange">
-    <property name="vhostRef"   type="objId" references="Vhost" access="RC" index="y" parentRef="y"/>
-    <property name="name"       type="sstr"  access="RC" index="y"/>
-    <property name="type"       type="sstr"  access="RO"/>
-    <property name="durable"    type="bool"  access="RC"/>
-    <property name="arguments"  type="map"   access="RO" desc="Arguments supplied in exchange.declare"/>
+    <property name="vhostRef"    type="objId" references="Vhost" access="RC" index="y" parentRef="y"/>
+    <property name="name"        type="sstr"  access="RC" index="y"/>
+    <property name="type"        type="sstr"  access="RO"/>
+    <property name="durable"     type="bool"  access="RO"/>
+    <property name="autoDelete"  type="bool"  access="RO"/>
+    <property name="altExchange" type="objId" access="RO" optional="y"/>
+    <property name="arguments"   type="map"   access="RO" desc="Arguments supplied in exchange.declare"/>
 
     <statistic name="producerCount" type="hilo32"  desc="Current producers on exchange"/>
     <statistic name="bindingCount"  type="hilo32"  desc="Current bindings"/>



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org