From 5891c19a838bd8987fbc04d23923f4f5f2ca4636 Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Fri, 1 Feb 2008 18:21:01 +0000 Subject: Initial cut of inter-broker bridging git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@617590 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/broker/Connection.h | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'cpp/src/qpid/broker/Connection.h') diff --git a/cpp/src/qpid/broker/Connection.h b/cpp/src/qpid/broker/Connection.h index 781b2304ec..99b394dda0 100644 --- a/cpp/src/qpid/broker/Connection.h +++ b/cpp/src/qpid/broker/Connection.h @@ -21,6 +21,7 @@ #ifndef _Connection_ #define _Connection_ +#include #include #include @@ -41,6 +42,7 @@ #include "SessionHandler.h" #include "qpid/management/Manageable.h" #include "qpid/management/Client.h" +#include "qpid/management/Link.h" #include @@ -87,6 +89,7 @@ class Connection : public sys::ConnectionInputHandler, void idleIn(); void closed(); bool doOutput(); + framing::ProtocolInitiation getInitiation() { return framing::ProtocolInitiation(version); } void closeChannel(framing::ChannelId channel); @@ -98,10 +101,31 @@ class Connection : public sys::ConnectionInputHandler, void setUserId(const string& uid); const string& getUserId() const; + void initMgmt(bool asLink = false); + private: typedef boost::ptr_map ChannelMap; typedef std::vector::iterator queue_iterator; + /** + * Connection may appear, for the purposes of management, as a + * normal client initiated connection or as an agent initiated + * inter-broker link. This wrapper abstracts the common interface + * for both. + */ + class MgmtWrapper + { + public: + virtual ~MgmtWrapper(){} + virtual void received(framing::AMQFrame& frame) = 0; + virtual management::ManagementObject::shared_ptr getManagementObject() const = 0; + virtual void closing() = 0; + virtual void processPending(){} + virtual void process(Connection&, const management::Args&){} + }; + class MgmtClient; + class MgmtLink; + framing::ProtocolVersion version; ChannelMap channels; sys::ConnectionOutputHandler* out; @@ -110,9 +134,10 @@ class Connection : public sys::ConnectionInputHandler, framing::AMQP_ClientProxy::Connection* client; uint64_t stagingThreshold; ConnectionHandler adapter; - management::Client::shared_ptr mgmtObject; + std::auto_ptr mgmtWrapper; bool mgmtClosing; string userId; + const std::string mgmtId; }; }} -- cgit v1.2.1