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 2010/03/16 22:38:35 UTC

svn commit: r924001 - in /qpid/branches/qmf-devel0.7a/qpid/cpp: include/qpid/framing/ src/qpid/broker/ src/qpid/management/

Author: tross
Date: Tue Mar 16 21:38:35 2010
New Revision: 924001

URL: http://svn.apache.org/viewvc?rev=924001&view=rev
Log:
Added type conversions for the broker's use of the QMF-generated headers.
    from qpid::framing::FieldTable to qpid::messaging::Variant::Map
    from qpid::framing::Uuid       to qpid::messaging::Uuid


Modified:
    qpid/branches/qmf-devel0.7a/qpid/cpp/include/qpid/framing/FieldTable.h
    qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/Exchange.cpp
    qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/Queue.cpp
    qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/SemanticState.cpp
    qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/SessionAdapter.cpp
    qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/System.cpp
    qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/management/ManagementAgent.cpp
    qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/management/ManagementAgent.h

Modified: qpid/branches/qmf-devel0.7a/qpid/cpp/include/qpid/framing/FieldTable.h
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7a/qpid/cpp/include/qpid/framing/FieldTable.h?rev=924001&r1=924000&r2=924001&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7a/qpid/cpp/include/qpid/framing/FieldTable.h (original)
+++ qpid/branches/qmf-devel0.7a/qpid/cpp/include/qpid/framing/FieldTable.h Tue Mar 16 21:38:35 2010
@@ -51,6 +51,7 @@ class FieldTable
     typedef boost::shared_ptr<FieldValue> ValuePtr;
     typedef std::map<std::string, ValuePtr> ValueMap;
     typedef ValueMap::iterator iterator;
+    typedef ValueMap::const_iterator const_iterator;
     typedef ValueMap::const_reference const_reference;
     typedef ValueMap::reference reference;
     typedef ValueMap::value_type value_type;

Modified: qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/Exchange.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/Exchange.cpp?rev=924001&r1=924000&r2=924001&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/Exchange.cpp (original)
+++ qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/Exchange.cpp Tue Mar 16 21:38:35 2010
@@ -149,7 +149,7 @@ Exchange::Exchange(const string& _name, 
             mgmtExchange = new _qmf::Exchange (agent, this, parent, _name);
             mgmtExchange->set_durable(durable);
             mgmtExchange->set_autoDelete(false);
-            mgmtExchange->set_arguments(args);
+            mgmtExchange->set_arguments(ManagementAgent::toMap(args));
             if (!durable) {
                 if (name.empty()) {
                     agent->addObject (mgmtExchange, 0x1000000000000004LL);  // Special default exchange ID
@@ -336,7 +336,7 @@ void Exchange::Binding::startManagement(
                         {
                             management::ObjectId queueId = mo->getObjectId();
                             mgmtBinding = new _qmf::Binding
-                                (agent, this, (Manageable*) parent, queueId, key, args);
+                                (agent, this, (Manageable*) parent, queueId, key, ManagementAgent::toMap(args));
                             if (!origin.empty())
                                 mgmtBinding->set_origin(origin);
                             agent->addObject (mgmtBinding, agent->allocateId(this));

Modified: qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/Queue.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/Queue.cpp?rev=924001&r1=924000&r2=924001&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/Queue.cpp (original)
+++ qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/Queue.cpp Tue Mar 16 21:38:35 2010
@@ -872,7 +872,7 @@ void Queue::configure(const FieldTable& 
     if (p && p->convertsTo<std::string>()) insertSequenceNumbers(p->get<std::string>());
 
     if (mgmtObject != 0)
-        mgmtObject->set_arguments (_settings);
+        mgmtObject->set_arguments(ManagementAgent::toMap(_settings));
 
     if ( isDurable() && ! getPersistenceId() && ! recovering )
       store->create(*this, _settings);

Modified: qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/SemanticState.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/SemanticState.cpp?rev=924001&r1=924000&r2=924001&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/SemanticState.cpp (original)
+++ qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/SemanticState.cpp Tue Mar 16 21:38:35 2010
@@ -280,7 +280,7 @@ SemanticState::ConsumerImpl::ConsumerImp
         if (agent != 0)
         {
             mgmtObject = new _qmf::Subscription(agent, this, ms , queue->GetManagementObject()->getObjectId() ,name,
-                !acquire, ackExpected, exclusive ,arguments);
+                                                !acquire, ackExpected, exclusive, ManagementAgent::toMap(arguments));
             agent->addObject (mgmtObject, agent->allocateId(this));
             mgmtObject->set_creditMode("WINDOW");
         }

Modified: qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/SessionAdapter.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/SessionAdapter.cpp?rev=924001&r1=924000&r2=924001&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/SessionAdapter.cpp (original)
+++ qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/SessionAdapter.cpp Tue Mar 16 21:38:35 2010
@@ -106,7 +106,7 @@ void SessionAdapter::ExchangeHandlerImpl
             ManagementAgent* agent = getBroker().getManagementAgent();
             if (agent)
                 agent->raiseEvent(_qmf::EventExchangeDeclare(getConnection().getUrl(), getConnection().getUserId(), exchange, type,
-                                                             alternateExchange, durable, false, args,
+                                                             alternateExchange, durable, false, ManagementAgent::toMap(args),
                                                              response.second ? "created" : "existing"));
 
         }catch(UnknownExchangeTypeException& /*e*/){
@@ -194,7 +194,8 @@ void SessionAdapter::ExchangeHandlerImpl
 
             ManagementAgent* agent = getBroker().getManagementAgent();
             if (agent)
-                agent->raiseEvent(_qmf::EventBind(getConnection().getUrl(), getConnection().getUserId(), exchangeName, queueName, exchangeRoutingKey, arguments));
+                agent->raiseEvent(_qmf::EventBind(getConnection().getUrl(), getConnection().getUserId(), exchangeName,
+                                                  queueName, exchangeRoutingKey, ManagementAgent::toMap(arguments)));
         }
     }else{
         throw NotFoundException("Bind failed. No such exchange: " + exchangeName);
@@ -389,7 +390,7 @@ void SessionAdapter::QueueHandlerImpl::d
         ManagementAgent* agent = getBroker().getManagementAgent();
         if (agent)
             agent->raiseEvent(_qmf::EventQueueDeclare(getConnection().getUrl(), getConnection().getUserId(),
-                                                      name, durable, exclusive, autoDelete, arguments,
+                                                      name, durable, exclusive, autoDelete, ManagementAgent::toMap(arguments),
                                                       queue_created.second ? "created" : "existing"));
     }
 
@@ -499,7 +500,7 @@ SessionAdapter::MessageHandlerImpl::subs
     ManagementAgent* agent = getBroker().getManagementAgent();
     if (agent)
         agent->raiseEvent(_qmf::EventSubscribe(getConnection().getUrl(), getConnection().getUserId(),
-                                               queueName, destination, exclusive, arguments));
+                                               queueName, destination, exclusive, ManagementAgent::toMap(arguments)));
 }
 
 void

Modified: qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/System.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/System.cpp?rev=924001&r1=924000&r2=924001&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/System.cpp (original)
+++ qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/broker/System.cpp Tue Mar 16 21:38:35 2010
@@ -22,6 +22,7 @@
 #include "qpid/management/ManagementAgent.h"
 #include "qpid/framing/Uuid.h"
 #include "qpid/sys/SystemInfo.h"
+#include "qpid/messaging/Uuid.h"
 #include <iostream>
 #include <fstream>
 
@@ -64,7 +65,7 @@ System::System (string _dataDir, Broker*
             }
         }
 
-        mgmtObject = new _qmf::System (agent, this, systemId);
+        mgmtObject = new _qmf::System(agent, this, messaging::Uuid(systemId.c_array()));
         std::string sysname, nodename, release, version, machine;
         qpid::sys::SystemInfo::getSystemId (sysname,
                                             nodename,

Modified: qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/management/ManagementAgent.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/management/ManagementAgent.cpp?rev=924001&r1=924000&r2=924001&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/management/ManagementAgent.cpp (original)
+++ qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/management/ManagementAgent.cpp Tue Mar 16 21:38:35 2010
@@ -29,13 +29,17 @@
 #include "qpid/sys/Time.h"
 #include "qpid/broker/ConnectionState.h"
 #include "qpid/broker/AclModule.h"
+#include "qpid/messaging/Variant.h"
+#include "qpid/messaging/Uuid.h"
 #include <list>
 #include <iostream>
 #include <fstream>
 #include <sstream>
+#include <typeinfo>
 
 using boost::intrusive_ptr;
 using qpid::framing::Uuid;
+using qpid::messaging::Variant;
 using namespace qpid::framing;
 using namespace qpid::management;
 using namespace qpid::broker;
@@ -1517,3 +1521,50 @@ void ManagementAgent::debugSnapshot(cons
     msg << " new objects: " << newManagementObjects.size();
     QPID_LOG(trace, msg.str());
 }
+
+qpid::messaging::Variant::Map ManagementAgent::toMap(const FieldTable& from)
+{
+    qpid::messaging::Variant::Map map;
+
+    for (FieldTable::const_iterator iter = from.begin(); iter != from.end(); iter++) {
+        const string& key(iter->first);
+        const FieldTable::ValuePtr& val(iter->second);
+
+        if (typeid(val.get()) == typeid(Str8Value) || typeid(val.get()) == typeid(Str16Value)) {
+            map[key] = Variant(val->get<string>());
+        } else if (typeid(val.get()) == typeid(FloatValue)) {
+            map[key] = Variant(val->get<float>());
+        } else if (typeid(val.get()) == typeid(DoubleValue)) {
+            map[key] = Variant(val->get<double>());
+        } else if (typeid(val.get()) == typeid(IntegerValue)) {
+            map[key] = Variant(val->get<int>());
+        } else if (typeid(val.get()) == typeid(TimeValue)) {
+            map[key] = Variant(val->get<int64_t>());
+        } else if (typeid(val.get()) == typeid(Integer64Value)) {
+            map[key] = Variant(val->get<int64_t>());
+        } else if (typeid(val.get()) == typeid(Unsigned64Value)) {
+            map[key] = Variant(val->get<uint64_t>());
+        } else if (typeid(val.get()) == typeid(FieldTableValue)) {
+            map[key] = Variant(toMap(val->get<FieldTable>()));
+        } else if (typeid(val.get()) == typeid(VoidValue)) {
+            map[key] = Variant();
+        } else if (typeid(val.get()) == typeid(BoolValue)) {
+            map[key] = Variant(val->get<bool>());
+        } else if (typeid(val.get()) == typeid(Unsigned8Value)) {
+            map[key] = Variant(val->get<uint8_t>());
+        } else if (typeid(val.get()) == typeid(Unsigned16Value)) {
+            map[key] = Variant(val->get<uint16_t>());
+        } else if (typeid(val.get()) == typeid(Unsigned32Value)) {
+            map[key] = Variant(val->get<uint32_t>());
+        } else if (typeid(val.get()) == typeid(Integer8Value)) {
+            map[key] = Variant(val->get<int8_t>());
+        } else if (typeid(val.get()) == typeid(Integer16Value)) {
+            map[key] = Variant(val->get<int16_t>());
+        } else if (typeid(val.get()) == typeid(UuidValue)) {
+            map[key] = Variant(messaging::Uuid(val->get<framing::Uuid>().c_array()));
+        }
+    }
+
+    return map;
+}
+

Modified: qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/management/ManagementAgent.h
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/management/ManagementAgent.h?rev=924001&r1=924000&r2=924001&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/management/ManagementAgent.h (original)
+++ qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/management/ManagementAgent.h Tue Mar 16 21:38:35 2010
@@ -32,6 +32,7 @@
 #include "qpid/management/ManagementEvent.h"
 #include "qpid/management/Manageable.h"
 #include "qmf/org/apache/qpid/broker/Agent.h"
+#include "qpid/messaging/Variant.h"
 #include <qpid/framing/AMQFrame.h>
 #include <memory>
 #include <string>
@@ -126,6 +127,8 @@ public:
     uint16_t getBootSequence(void) { return bootSequence; }
     void setBootSequence(uint16_t b) { bootSequence = b; }
 
+    static messaging::Variant::Map toMap(const framing::FieldTable& from);
+
 private:
     struct Periodic : public qpid::sys::TimerTask
     {



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