On 07/17/2011 10:37 AM, fadams wrote:
Hi again Gordon,
I've taken to looking through the C++ broker code to figure some of this out
and I'm afraid it's making my head EXPLODE :-)

So I've found ./cpp/src/qpid/management/ManagementAgent.cpp and the method
"handleGetQueryLH" does indeed say "Currently we only support OBJECT
queries".

handleGetQueryLH seems to be dispatched from dispatchAgentCommandLH which in
turn is called from dispatchCommand which seems to be called from
specialised Direct&  Topic Exchanges

So far so good, but I also found
./cpp/src/qpid/agent/ManagementAgentImpl.cpp - looking at the headers this
*appears* to inherit from ManagementAgent - though I'm not clear what
behaviours it inherits..

This has a method handleGetQuery which has a lot of similarities with
handleGetQueryLH (though this seems to support "SCHEMA_ID" at least
partially) this seems to be dispatched from a received method, though I
couldn't figure out what calls that.


So what's the relationship between ManagementAgent and ManagementAgentImpl?
I grepped the code base and ManagementAgentImpl seems to be called by as a
Singleton but the getInstance doesn't seem to be called anywhere except some
testagent.cpp.

Have I missed something or should I just focus on the ./src/qpid/management
directory...

I'm not the expert on the QMF related code, however two points will probably help explain the bigger picture a little.

First, there are two versions of the QMF protocol. Version 1 had a custom message encoding scheme and really required that you use it through an API. Version 2 was designed to be easier to use as a messaging protocol in its own right, with map- and list- encodings for messages and simpler interactions.

The second point is that the QMF work has had a broader goal in mind than smply managing the broker. It was designed to be able to be a general management infrastructure. Therefore it is possible to implement arbitrary management agents, each with their own schemas and interact with them using QMF layered on AMQP.

I believe the qpid::agent code is an old API for QMFv1 based management agents (apart from the broker),but perhaps Ted or Ken can correct me on this.

At present I believe that the qpid::management code is essentially the brokers own internal management agent. However in the QMFv1 protocol the broker was a more explicit intermediary in all agent communications so the distinction there is a little blurred. The code also has two parallel implementations for the two different versions and as you noted, the second version seems not yet to support querying of the schema.

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to