diff options
Diffstat (limited to 'cpp/src')
| -rw-r--r-- | cpp/src/qpid/broker/Broker.cpp | 21 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/QueueRegistry.cpp | 7 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/QueueRegistry.h | 4 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/SessionHandler.cpp | 1 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/management/ManagementAgent.cpp | 34 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/management/ManagementAgent.h | 3 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/management/ManagementObject.cpp | 6 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/management/ManagementObject.h | 43 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/management/ManagementObjectBroker.cpp | 8 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/management/ManagementObjectBroker.h | 10 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/management/ManagementObjectQueue.cpp | 47 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/management/ManagementObjectQueue.h | 14 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/management/ManagementObjectVhost.cpp | 12 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/management/ManagementObjectVhost.h | 13 |
14 files changed, 133 insertions, 90 deletions
diff --git a/cpp/src/qpid/broker/Broker.cpp b/cpp/src/qpid/broker/Broker.cpp index 45f5be9cad..5896ce7947 100644 --- a/cpp/src/qpid/broker/Broker.cpp +++ b/cpp/src/qpid/broker/Broker.cpp @@ -113,7 +113,18 @@ Broker::Broker(const Broker::Options& conf) : { if(conf.enableMgmt){ managementAgent = ManagementAgent::shared_ptr (new ManagementAgent (conf.mgmtPubInterval)); - queues.setManagementAgent(managementAgent); + + mgmtObject = ManagementObjectBroker::shared_ptr (new ManagementObjectBroker (conf)); + managementAgent->addObject (dynamic_pointer_cast<ManagementObject>(mgmtObject)); + + // Since there is currently no support for virtual hosts, a management object + // representing the implied single virtual host is added here. + mgmtVhostObject = ManagementObjectVhost::shared_ptr + (new ManagementObjectVhost (mgmtObject->getObjectId (), conf)); + managementAgent->addObject (dynamic_pointer_cast<ManagementObject>(mgmtVhostObject)); + + queues.setManagementAgent (managementAgent); + queues.setManagementVhost (dynamic_pointer_cast<ManagementObject>(mgmtVhostObject)); } exchanges.declare(empty, DirectExchange::typeName); // Default exchange. @@ -128,14 +139,6 @@ Broker::Broker(const Broker::Options& conf) : Exchange::shared_ptr mExchange = exchanges.get (qpid_management); managementAgent->setExchange (mExchange); dynamic_pointer_cast<ManagementExchange>(mExchange)->setManagmentAgent (managementAgent); - - mgmtObject = ManagementObjectBroker::shared_ptr (new ManagementObjectBroker (conf)); - managementAgent->addObject (dynamic_pointer_cast<ManagementObject>(mgmtObject)); - - // Since there is currently no support for virtual hosts, a management object - // representing the implied single virtual host is added here. - mgmtVhostObject = ManagementObjectVhost::shared_ptr (new ManagementObjectVhost (conf)); - managementAgent->addObject (dynamic_pointer_cast<ManagementObject>(mgmtVhostObject)); } else QPID_LOG(info, "Management not enabled"); diff --git a/cpp/src/qpid/broker/QueueRegistry.cpp b/cpp/src/qpid/broker/QueueRegistry.cpp index 31eab33fe2..bc7f00c7ef 100644 --- a/cpp/src/qpid/broker/QueueRegistry.cpp +++ b/cpp/src/qpid/broker/QueueRegistry.cpp @@ -47,7 +47,8 @@ QueueRegistry::declare(const string& declareName, bool durable, queues[name] = queue; if (managementAgent){ - ManagementObjectQueue::shared_ptr mgmtObject(new ManagementObjectQueue (name, durable, autoDelete)); + ManagementObjectQueue::shared_ptr mgmtObject + (new ManagementObjectQueue (managementVhost->getObjectId (), name, durable, autoDelete)); queue->setMgmt (mgmtObject); managementAgent->addObject(dynamic_pointer_cast<ManagementObject>(mgmtObject)); @@ -115,3 +116,7 @@ ManagementAgent::shared_ptr QueueRegistry::getManagementAgent (void) return managementAgent; } +void QueueRegistry::setManagementVhost (ManagementObject::shared_ptr vhost) +{ + managementVhost = vhost; +} diff --git a/cpp/src/qpid/broker/QueueRegistry.h b/cpp/src/qpid/broker/QueueRegistry.h index 8dc5539051..6fc90a5527 100644 --- a/cpp/src/qpid/broker/QueueRegistry.h +++ b/cpp/src/qpid/broker/QueueRegistry.h @@ -95,6 +95,7 @@ class QueueRegistry{ */ void setManagementAgent (ManagementAgent::shared_ptr agent); ManagementAgent::shared_ptr getManagementAgent (void); + void setManagementVhost (ManagementObject::shared_ptr vhost); private: typedef std::map<string, Queue::shared_ptr> QueueMap; @@ -102,7 +103,8 @@ private: qpid::sys::RWlock lock; int counter; MessageStore* const store; - ManagementAgent::shared_ptr managementAgent; + ManagementAgent::shared_ptr managementAgent; + ManagementObject::shared_ptr managementVhost; }; diff --git a/cpp/src/qpid/broker/SessionHandler.cpp b/cpp/src/qpid/broker/SessionHandler.cpp index f72c52c809..280a843a0e 100644 --- a/cpp/src/qpid/broker/SessionHandler.cpp +++ b/cpp/src/qpid/broker/SessionHandler.cpp @@ -32,6 +32,7 @@ namespace qpid { namespace broker { using namespace framing; using namespace std; +using namespace qpid::sys; SessionHandler::SessionHandler(Connection& c, ChannelId ch) : InOutHandler(0, &c.getOutput()), diff --git a/cpp/src/qpid/broker/management/ManagementAgent.cpp b/cpp/src/qpid/broker/management/ManagementAgent.cpp index 1121b7bc6b..c52e330ff2 100644 --- a/cpp/src/qpid/broker/management/ManagementAgent.cpp +++ b/cpp/src/qpid/broker/management/ManagementAgent.cpp @@ -31,7 +31,7 @@ using namespace qpid::framing; using namespace qpid::broker; using namespace qpid::sys; -ManagementAgent::ManagementAgent (uint16_t _interval) : interval (_interval) +ManagementAgent::ManagementAgent (uint16_t _interval) : interval (_interval), nextObjectId(1) { timer.add (TimerTask::shared_ptr (new Periodic(*this, interval))); } @@ -43,6 +43,7 @@ void ManagementAgent::setExchange (Exchange::shared_ptr _exchange) void ManagementAgent::addObject (ManagementObject::shared_ptr object) { + object->setObjectId (nextObjectId++); managementObjects.push_back (object); QPID_LOG(info, "Management Object Added"); } @@ -197,8 +198,37 @@ void ManagementAgent::PeriodicProcessing (void) } void ManagementAgent::dispatchCommand (Deliverable& /*msg*/, - const string& /*routingKey*/, + const string& routingKey, const FieldTable* /*args*/) { + size_t pos, start; + + if (routingKey.compare (0, 7, "method.") != 0) + { + QPID_LOG (debug, "Illegal routing key for dispatch: " << routingKey); + return; + } + + start = 7; + if (routingKey.length () == start) + { + QPID_LOG (debug, "Missing class-key in routing key: " << routingKey); + return; + } + + pos = routingKey.find ('.', start); + if (pos == string::npos || routingKey.length () == pos + 1) + { + QPID_LOG (debug, "Missing method-key in routing key: " << routingKey); + return; + } + + string className = routingKey.substr (start, pos - start); + + start = pos + 1; + + string methodName = routingKey.substr (start, routingKey.length () - start); + + QPID_LOG (debug, "Dispatch class: " << className << ", method: " << methodName); } diff --git a/cpp/src/qpid/broker/management/ManagementAgent.h b/cpp/src/qpid/broker/management/ManagementAgent.h index c3cfa58291..e699228601 100644 --- a/cpp/src/qpid/broker/management/ManagementAgent.h +++ b/cpp/src/qpid/broker/management/ManagementAgent.h @@ -45,7 +45,7 @@ class ManagementAgent void clientAdded (void); void dispatchCommand (Deliverable& msg, const string& routingKey, - const FieldTable* args); + const qpid::framing::FieldTable* args); private: @@ -62,6 +62,7 @@ class ManagementAgent Timer timer; Exchange::shared_ptr exchange; uint16_t interval; + uint32_t nextObjectId; void PeriodicProcessing (void); }; diff --git a/cpp/src/qpid/broker/management/ManagementObject.cpp b/cpp/src/qpid/broker/management/ManagementObject.cpp index c536d96b1b..1c693d6b92 100644 --- a/cpp/src/qpid/broker/management/ManagementObject.cpp +++ b/cpp/src/qpid/broker/management/ManagementObject.cpp @@ -41,6 +41,11 @@ void ManagementObject::schemaItem (Buffer& buf, buf.putShortString (description); } +void ManagementObject::schemaListBegin (Buffer& buf) +{ + schemaItem (buf, TYPE_UINT32, "id", "Object ID", true, true); +} + void ManagementObject::schemaListEnd (Buffer& buf) { buf.putOctet (FLAG_END); @@ -51,4 +56,5 @@ void ManagementObject::writeTimestamps (Buffer& buf) buf.putLongLong (uint64_t (Duration (now ()))); buf.putLongLong (createTime); buf.putLongLong (destroyTime); + buf.putLong (objectId); } diff --git a/cpp/src/qpid/broker/management/ManagementObject.h b/cpp/src/qpid/broker/management/ManagementObject.h index 107da62e67..a39ae80c4f 100644 --- a/cpp/src/qpid/broker/management/ManagementObject.h +++ b/cpp/src/qpid/broker/management/ManagementObject.h @@ -30,9 +30,6 @@ namespace qpid { namespace broker { -using namespace qpid::framing; -using namespace qpid::sys; - const uint16_t OBJECT_SYSTEM = 1; const uint16_t OBJECT_BROKER = 2; const uint16_t OBJECT_VHOST = 3; @@ -52,6 +49,7 @@ class ManagementObject uint64_t createTime; uint64_t destroyTime; + uint32_t objectId; bool configChanged; bool instChanged; bool deleted; @@ -67,31 +65,34 @@ class ManagementObject static const uint8_t FLAG_INDEX = 0x02; static const uint8_t FLAG_END = 0x80; - void schemaItem (Buffer& buf, - uint8_t typeCode, - std::string name, - std::string description, - bool isConfig = false, - bool isIndex = false); - void schemaListEnd (Buffer& buf); - void writeTimestamps (Buffer& buf); + void schemaItem (qpid::framing::Buffer& buf, + uint8_t typeCode, + std::string name, + std::string description, + bool isConfig = false, + bool isIndex = false); + void schemaListBegin (qpid::framing::Buffer& buf); + void schemaListEnd (qpid::framing::Buffer& buf); + void writeTimestamps (qpid::framing::Buffer& buf); public: typedef boost::shared_ptr<ManagementObject> shared_ptr; - ManagementObject () : destroyTime(0), configChanged(true), + ManagementObject () : destroyTime(0), objectId (), configChanged(true), instChanged(true), deleted(false) - { createTime = uint64_t (Duration (now ())); } + { createTime = uint64_t (qpid::sys::Duration (qpid::sys::now ())); } virtual ~ManagementObject () {} - virtual uint16_t getObjectType (void) = 0; - virtual std::string getObjectName (void) = 0; - virtual void writeSchema (Buffer& buf) = 0; - virtual void writeConfig (Buffer& buf) = 0; - virtual void writeInstrumentation (Buffer& buf) = 0; - virtual bool getSchemaNeeded (void) = 0; - virtual void setSchemaNeeded (void) = 0; + virtual uint16_t getObjectType (void) = 0; + virtual std::string getObjectName (void) = 0; + virtual void writeSchema (qpid::framing::Buffer& buf) = 0; + virtual void writeConfig (qpid::framing::Buffer& buf) = 0; + virtual void writeInstrumentation (qpid::framing::Buffer& buf) = 0; + virtual bool getSchemaNeeded (void) = 0; + virtual void setSchemaNeeded (void) = 0; + void setObjectId (uint32_t oid) { objectId = oid; } + uint32_t getObjectId (void) { return objectId; } inline bool getConfigChanged (void) { return configChanged; } virtual bool getInstChanged (void) { return instChanged; } inline void setAllChanged (void) @@ -101,7 +102,7 @@ class ManagementObject } inline void resourceDestroy (void) { - destroyTime = uint64_t (Duration (now ())); + destroyTime = uint64_t (qpid::sys::Duration (qpid::sys::now ())); deleted = true; } bool isDeleted (void) { return deleted; } diff --git a/cpp/src/qpid/broker/management/ManagementObjectBroker.cpp b/cpp/src/qpid/broker/management/ManagementObjectBroker.cpp index 378017d5a8..139ea0acca 100644 --- a/cpp/src/qpid/broker/management/ManagementObjectBroker.cpp +++ b/cpp/src/qpid/broker/management/ManagementObjectBroker.cpp @@ -54,8 +54,9 @@ void ManagementObjectBroker::writeSchema (Buffer& buf) { schemaNeeded = false; - schemaItem (buf, TYPE_STRING, "sysId", "System ID", true, true); - schemaItem (buf, TYPE_UINT16, "port", "TCP Port for AMQP Service", true); + schemaListBegin (buf); + schemaItem (buf, TYPE_UINT32, "systemRef", "System ID", true, true); + schemaItem (buf, TYPE_UINT16, "port", "TCP Port for AMQP Service", true, true); schemaItem (buf, TYPE_UINT16, "workerThreads", "Thread pool size", true); schemaItem (buf, TYPE_UINT16, "maxConns", "Maximum allowed connections", true); schemaItem (buf, TYPE_UINT16, "connBacklog", @@ -72,7 +73,6 @@ void ManagementObjectBroker::writeSchema (Buffer& buf) schemaItem (buf, TYPE_STRING, "clusterName", "Name of cluster this server is a member of, zero-length for standalone server", true); schemaItem (buf, TYPE_STRING, "version", "Running software version", true); - schemaListEnd (buf); } @@ -81,7 +81,7 @@ void ManagementObjectBroker::writeConfig (Buffer& buf) configChanged = false; writeTimestamps (buf); - buf.putShortString (sysId); + buf.putLong (0); buf.putShort (port); buf.putShort (workerThreads); buf.putShort (maxConns); diff --git a/cpp/src/qpid/broker/management/ManagementObjectBroker.h b/cpp/src/qpid/broker/management/ManagementObjectBroker.h index f83df061af..25d6bf49b0 100644 --- a/cpp/src/qpid/broker/management/ManagementObjectBroker.h +++ b/cpp/src/qpid/broker/management/ManagementObjectBroker.h @@ -42,8 +42,6 @@ class ManagementObjectBroker : public ManagementObject static bool schemaNeeded; - std::string objectName; - std::string sysId; uint16_t port; uint16_t workerThreads; @@ -59,10 +57,10 @@ class ManagementObjectBroker : public ManagementObject std::string version; uint16_t getObjectType (void) { return OBJECT_BROKER; } - std::string getObjectName (void) { return objectName; } - void writeSchema (Buffer& buf); - void writeConfig (Buffer& buf); - void writeInstrumentation (Buffer& /*buf*/) {} + std::string getObjectName (void) { return "broker"; } + void writeSchema (qpid::framing::Buffer& buf); + void writeConfig (qpid::framing::Buffer& buf); + void writeInstrumentation (qpid::framing::Buffer& /*buf*/) {} bool getSchemaNeeded (void) { return schemaNeeded; } void setSchemaNeeded (void) { schemaNeeded = true; } diff --git a/cpp/src/qpid/broker/management/ManagementObjectQueue.cpp b/cpp/src/qpid/broker/management/ManagementObjectQueue.cpp index 70913ea910..8d8ff8cbf4 100644 --- a/cpp/src/qpid/broker/management/ManagementObjectQueue.cpp +++ b/cpp/src/qpid/broker/management/ManagementObjectQueue.cpp @@ -27,9 +27,9 @@ using namespace qpid::framing; bool ManagementObjectQueue::schemaNeeded = true; -ManagementObjectQueue::ManagementObjectQueue (std::string& _name, +ManagementObjectQueue::ManagementObjectQueue (uint32_t _vhostRef, std::string& _name, bool _durable, bool _autoDelete) : - vhostName("/"), name(_name), durable(_durable), autoDelete(_autoDelete) + vhostRef(_vhostRef), name(_name), durable(_durable), autoDelete(_autoDelete) { msgTotalEnqueues = 0; msgTotalDequeues = 0; @@ -79,15 +79,15 @@ void ManagementObjectQueue::writeSchema (Buffer& buf) { schemaNeeded = false; - schemaItem (buf, TYPE_STRING, "vhostRef", "Virtual Host Ref", true, true); - schemaItem (buf, TYPE_STRING, "name", "Queue Name", true, true); + schemaListBegin (buf); + schemaItem (buf, TYPE_UINT32, "vhostRef", "Virtual Host Ref", true); + schemaItem (buf, TYPE_STRING, "name", "Queue Name", true); schemaItem (buf, TYPE_BOOL, "durable", "Durable", true); schemaItem (buf, TYPE_BOOL, "autoDelete", "AutoDelete", true); - schemaItem (buf, TYPE_UINT64, "msgTotalEnqueues", "Total messages enqueued"); schemaItem (buf, TYPE_UINT64, "msgTotalDequeues", "Total messages dequeued"); - schemaItem (buf, TYPE_UINT64, "msgTxEnqueues", "Transactional messages enqueued"); - schemaItem (buf, TYPE_UINT64, "msgTxDequeues", "Transactional messages dequeued"); + schemaItem (buf, TYPE_UINT64, "msgTxnEnqueues", "Transactional messages enqueued"); + schemaItem (buf, TYPE_UINT64, "msgTxnDequeues", "Transactional messages dequeued"); schemaItem (buf, TYPE_UINT64, "msgPersistEnqueues", "Persistent messages enqueued"); schemaItem (buf, TYPE_UINT64, "msgPersistDequeues", "Persistent messages dequeued"); schemaItem (buf, TYPE_UINT32, "msgDepth", "Current size of queue in messages"); @@ -95,29 +95,28 @@ void ManagementObjectQueue::writeSchema (Buffer& buf) schemaItem (buf, TYPE_UINT32, "msgDepthHigh", "High-water queue size, this interval"); schemaItem (buf, TYPE_UINT64, "byteTotalEnqueues", "Total messages enqueued"); schemaItem (buf, TYPE_UINT64, "byteTotalDequeues", "Total messages dequeued"); - schemaItem (buf, TYPE_UINT64, "byteTxEnqueues", "Transactional messages enqueued"); - schemaItem (buf, TYPE_UINT64, "byteTxDequeues", "Transactional messages dequeued"); + schemaItem (buf, TYPE_UINT64, "byteTxnEnqueues", "Transactional messages enqueued"); + schemaItem (buf, TYPE_UINT64, "byteTxnDequeues", "Transactional messages dequeued"); schemaItem (buf, TYPE_UINT64, "bytePersistEnqueues", "Persistent messages enqueued"); schemaItem (buf, TYPE_UINT64, "bytePersistDequeues", "Persistent messages dequeued"); schemaItem (buf, TYPE_UINT32, "byteDepth", "Current size of queue in bytes"); schemaItem (buf, TYPE_UINT32, "byteDepthLow", "Low-water mark this interval"); schemaItem (buf, TYPE_UINT32, "byteDepthHigh", "High-water mark this interval"); - schemaItem (buf, TYPE_UINT64, "enqueueTxStarts", "Total enqueue transactions started "); - schemaItem (buf, TYPE_UINT64, "enqueueTxCommits", "Total enqueue transactions committed"); - schemaItem (buf, TYPE_UINT64, "enqueueTxRejects", "Total enqueue transactions rejected"); - schemaItem (buf, TYPE_UINT32, "enqueueTxCount", "Current pending enqueue transactions"); - schemaItem (buf, TYPE_UINT32, "enqueueTxCountLow", "Low water mark this interval"); - schemaItem (buf, TYPE_UINT32, "enqueueTxCountHigh", "High water mark this interval"); - schemaItem (buf, TYPE_UINT64, "dequeueTxStarts", "Total dequeue transactions started "); - schemaItem (buf, TYPE_UINT64, "dequeueTxCommits", "Total dequeue transactions committed"); - schemaItem (buf, TYPE_UINT64, "dequeueTxRejects", "Total dequeue transactions rejected"); - schemaItem (buf, TYPE_UINT32, "dequeueTxCount", "Current pending dequeue transactions"); - schemaItem (buf, TYPE_UINT32, "dequeueTxCountLow", "Transaction low water mark this interval"); - schemaItem (buf, TYPE_UINT32, "dequeueTxCountHigh", "Transaction high water mark this interval"); + schemaItem (buf, TYPE_UINT64, "enqueueTxnStarts", "Total enqueue transactions started "); + schemaItem (buf, TYPE_UINT64, "enqueueTxnCommits", "Total enqueue transactions committed"); + schemaItem (buf, TYPE_UINT64, "enqueueTxnRejects", "Total enqueue transactions rejected"); + schemaItem (buf, TYPE_UINT32, "enqueueTxnCount", "Current pending enqueue transactions"); + schemaItem (buf, TYPE_UINT32, "enqueueTxnCountLow", "Low water mark this interval"); + schemaItem (buf, TYPE_UINT32, "enqueueTxnCountHigh", "High water mark this interval"); + schemaItem (buf, TYPE_UINT64, "dequeueTxnStarts", "Total dequeue transactions started "); + schemaItem (buf, TYPE_UINT64, "dequeueTxnCommits", "Total dequeue transactions committed"); + schemaItem (buf, TYPE_UINT64, "dequeueTxnRejects", "Total dequeue transactions rejected"); + schemaItem (buf, TYPE_UINT32, "dequeueTxnCount", "Current pending dequeue transactions"); + schemaItem (buf, TYPE_UINT32, "dequeueTxnCountLow", "Transaction low water mark this interval"); + schemaItem (buf, TYPE_UINT32, "dequeueTxnCountHigh", "Transaction high water mark this interval"); schemaItem (buf, TYPE_UINT32, "consumers", "Current consumers on queue"); schemaItem (buf, TYPE_UINT32, "consumersLow", "Consumer low water mark this interval"); schemaItem (buf, TYPE_UINT32, "consumersHigh", "Consumer high water mark this interval"); - schemaListEnd (buf); } @@ -126,7 +125,7 @@ void ManagementObjectQueue::writeConfig (Buffer& buf) configChanged = false; writeTimestamps (buf); - buf.putShortString (vhostName); + buf.putLong (vhostRef); buf.putShortString (name); buf.putOctet (durable ? 1 : 0); buf.putOctet (autoDelete ? 1 : 0); @@ -137,8 +136,6 @@ void ManagementObjectQueue::writeInstrumentation (Buffer& buf) instChanged = false; writeTimestamps (buf); - buf.putShortString (vhostName); - buf.putShortString (name); buf.putLongLong (msgTotalEnqueues); buf.putLongLong (msgTotalDequeues); buf.putLongLong (msgTxEnqueues); diff --git a/cpp/src/qpid/broker/management/ManagementObjectQueue.h b/cpp/src/qpid/broker/management/ManagementObjectQueue.h index 4a0608c7d0..cedbf81809 100644 --- a/cpp/src/qpid/broker/management/ManagementObjectQueue.h +++ b/cpp/src/qpid/broker/management/ManagementObjectQueue.h @@ -36,8 +36,7 @@ class ManagementObjectQueue : public ManagementObject static bool schemaNeeded; - std::string objectName; - std::string vhostName; + uint32_t vhostRef; std::string name; bool durable; bool autoDelete; @@ -85,10 +84,10 @@ class ManagementObjectQueue : public ManagementObject uint32_t consumersHigh; // High water mark this interval uint16_t getObjectType (void) { return OBJECT_QUEUE; } - std::string getObjectName (void) { return objectName; } - void writeSchema (Buffer& buf); - void writeConfig (Buffer& buf); - void writeInstrumentation (Buffer& buf); + std::string getObjectName (void) { return "queue"; } + void writeSchema (qpid::framing::Buffer& buf); + void writeConfig (qpid::framing::Buffer& buf); + void writeInstrumentation (qpid::framing::Buffer& buf); bool getSchemaNeeded (void) { return schemaNeeded; } void setSchemaNeeded (void) { schemaNeeded = true; } @@ -119,7 +118,8 @@ class ManagementObjectQueue : public ManagementObject typedef boost::shared_ptr<ManagementObjectQueue> shared_ptr; - ManagementObjectQueue (std::string& name, bool durable, bool autoDelete); + ManagementObjectQueue (uint32_t _vhostRef, std::string& name, + bool durable, bool autoDelete); ~ManagementObjectQueue (void); // The following mask contents are used to describe enqueued or dequeued diff --git a/cpp/src/qpid/broker/management/ManagementObjectVhost.cpp b/cpp/src/qpid/broker/management/ManagementObjectVhost.cpp index 25a2200106..b5c8b3b0b7 100644 --- a/cpp/src/qpid/broker/management/ManagementObjectVhost.cpp +++ b/cpp/src/qpid/broker/management/ManagementObjectVhost.cpp @@ -28,10 +28,8 @@ using namespace qpid::framing; bool ManagementObjectVhost::schemaNeeded = true; -ManagementObjectVhost::ManagementObjectVhost (const Options& /*_conf*/) -{ - name = "/"; -} +ManagementObjectVhost::ManagementObjectVhost (uint32_t _sysRef, const Options& /*_conf*/) : + sysRef(_sysRef), name("/") {} ManagementObjectVhost::~ManagementObjectVhost () {} @@ -39,8 +37,9 @@ void ManagementObjectVhost::writeSchema (Buffer& buf) { schemaNeeded = false; - schemaItem (buf, TYPE_STRING, "name", "Name of virtual host", true, true); - + schemaListBegin (buf); + schemaItem (buf, TYPE_UINT32, "brokerRef", "Broker Reference" , true); + schemaItem (buf, TYPE_STRING, "name", "Name of virtual host", true); schemaListEnd (buf); } @@ -49,6 +48,7 @@ void ManagementObjectVhost::writeConfig (Buffer& buf) configChanged = false; writeTimestamps (buf); + buf.putLong (sysRef); buf.putShortString (name); } diff --git a/cpp/src/qpid/broker/management/ManagementObjectVhost.h b/cpp/src/qpid/broker/management/ManagementObjectVhost.h index 77ac4eea38..c36acb3487 100644 --- a/cpp/src/qpid/broker/management/ManagementObjectVhost.h +++ b/cpp/src/qpid/broker/management/ManagementObjectVhost.h @@ -35,22 +35,21 @@ class ManagementObjectVhost : public ManagementObject typedef boost::shared_ptr<ManagementObjectVhost> shared_ptr; - ManagementObjectVhost (const Options& conf); + ManagementObjectVhost (uint32_t sysRef, const Options& conf); ~ManagementObjectVhost (void); private: static bool schemaNeeded; - std::string objectName; - + uint32_t sysRef; std::string name; uint16_t getObjectType (void) { return OBJECT_VHOST; } - std::string getObjectName (void) { return objectName; } - void writeSchema (Buffer& buf); - void writeConfig (Buffer& buf); - void writeInstrumentation (Buffer& /*buf*/) {} + std::string getObjectName (void) { return "vhost"; } + void writeSchema (qpid::framing::Buffer& buf); + void writeConfig (qpid::framing::Buffer& buf); + void writeInstrumentation (qpid::framing::Buffer& /*buf*/) {} bool getSchemaNeeded (void) { return schemaNeeded; } void setSchemaNeeded (void) { schemaNeeded = true; } |
