summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/agent
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2008-10-10 22:18:42 +0000
committerTed Ross <tross@apache.org>2008-10-10 22:18:42 +0000
commitb590b12a2f48f93d92a71d4fac2f2711189ce4ef (patch)
treeeadbd3b1d2bfb6652d2f658490cedb6d0d92b486 /cpp/src/qpid/agent
parent91f45702afcf3b675fe80dbcf3a452daa61469e4 (diff)
downloadqpid-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.cpp29
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;