diff options
| author | Ted Ross <tross@apache.org> | 2008-10-10 22:18:42 +0000 |
|---|---|---|
| committer | Ted Ross <tross@apache.org> | 2008-10-10 22:18:42 +0000 |
| commit | b590b12a2f48f93d92a71d4fac2f2711189ce4ef (patch) | |
| tree | eadbd3b1d2bfb6652d2f658490cedb6d0d92b486 /cpp/src/qpid/agent | |
| parent | 91f45702afcf3b675fe80dbcf3a452daa61469e4 (diff) | |
| download | qpid-python-b590b12a2f48f93d92a71d4fac2f2711189ce4ef.tar.gz | |
QPID-1350 - Object reference following in the QMF console API
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@703588 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/agent')
| -rw-r--r-- | cpp/src/qpid/agent/ManagementAgentImpl.cpp | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/cpp/src/qpid/agent/ManagementAgentImpl.cpp b/cpp/src/qpid/agent/ManagementAgentImpl.cpp index f449d8e214..2f7a524a65 100644 --- a/cpp/src/qpid/agent/ManagementAgentImpl.cpp +++ b/cpp/src/qpid/agent/ManagementAgentImpl.cpp @@ -403,9 +403,26 @@ void ManagementAgentImpl::handleGetQuery(Buffer& inBuffer, uint32_t sequence, st ft.decode(inBuffer); value = ft.get("_class"); - if (value.get() == 0 || !value->convertsTo<string>()) - { - // TODO: Send completion with an error code + if (value.get() == 0 || !value->convertsTo<string>()) { + value = ft.get("_objectid"); + if (value.get() == 0 || !value->convertsTo<string>()) + return; + + ObjectId selector(value->get<string>()); + ManagementObjectMap::iterator iter = managementObjects.find(selector); + if (iter != managementObjects.end()) { + ManagementObject* object = iter->second; + Buffer outBuffer (outputBuffer, MA_BUFFER_SIZE); + uint32_t outLen; + + encodeHeader(outBuffer, 'g', sequence); + object->writeProperties(outBuffer); + object->writeStatistics(outBuffer, true); + outLen = MA_BUFFER_SIZE - outBuffer.available (); + outBuffer.reset (); + connThreadBody.sendBuffer(outBuffer, outLen, "amq.direct", replyTo); + } + sendCommandComplete(replyTo, sequence); return; } @@ -413,11 +430,9 @@ void ManagementAgentImpl::handleGetQuery(Buffer& inBuffer, uint32_t sequence, st for (ManagementObjectMap::iterator iter = managementObjects.begin(); iter != managementObjects.end(); - iter++) - { + iter++) { ManagementObject* object = iter->second; - if (object->getClassName() == className) - { + if (object->getClassName() == className) { Buffer outBuffer(outputBuffer, MA_BUFFER_SIZE); uint32_t outLen; |
