Hi, I noticed recently there was a question about how to do this ( http://qpid.2158936.n2.nabble.com/How-from-within-a-C-application-is-it-possible-to-examine-and-manage-a-broker-td7652451.html) which happened to be posted at exactly the time I'd finished implementing a small feature subset in C++. This was based on the python implementation exactly as Steve mentioned in the above post. Since it seemed we at FourC are not the only ones interested in this functionality I've carved the code out of our libraries, expanded the scope to include as much of the QMF RPC interface as I could and released it under LGPL3 as a library here https://github.com/fourceu/fourc-qpid-manager
>From a user perspective it's simply a case of creating an instance of a fourc::fmf::BrokerAgent, which requires a connected qpid::messaging::Session for its constructor. The interface of this class is similar to the Qpid Python one and should be pretty self-explanatory. The functionality offered includes making ACL queries, triggering an ACL reload, querying for broker, connection, exchange, link, memory, session and subscriber stats and querying/creating/deleting exchanges, queues and bindings. Stub implementations of the Cluster and HaBroker classes are included but they don't do anything because I haven't yet built a cluster to work with! Internally the library uses the QMF interface and is very closely modelled on the Python implementation; after that things get ugly as of course C++ doesn't support some of the nice Python deserialisation features, so the rest of the library is pairs of classes and related decoders. It includes a fairly comprehensive suite of tests which execute on Travis CI so my hope is that even though the code is very new it should actually work! If there's sufficient interest I can add more documentation and some examples. One feature we would really like which is not present is the ability to modify ACLs "in memory", so to speak, rather than making modifications to the ACL file and then triggering a reload. Could anyone provide more information about whether this is possible and if so how? I hope this library will be of use to someone but of course the main reason for publishing it is to end up with the best possible implementation so feedback and contributions will be very warmly welcomed! -- *Chris Richardson*, System Architect c...@fourc.eu *FourC AS, Vestre Rosten 81, Trekanten, NO-7075 Tiller, Norwaywww.fourc.eu <http://www.fourc.eu/>* *Follow us on LinkedIn <http://bit.ly/fourcli>, Facebook <http://bit.ly/fourcfb>, Google+ <http://bit.ly/fourcgp> and Twitter <http://bit.ly/fourctw>!*