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]