summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/Connection.h
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2008-07-04 19:07:33 +0000
committerAlan Conway <aconway@apache.org>2008-07-04 19:07:33 +0000
commitd738d179e4c040e62438516bc0992736d00b902f (patch)
tree73694d534d1fd2526dfe64b874f60944ab5a92b7 /cpp/src/qpid/broker/Connection.h
parent3a00f4fdffe6de06873e9d4d3569bb7531adda85 (diff)
downloadqpid-python-d738d179e4c040e62438516bc0992736d00b902f.tar.gz
Cluster prototype: handles client-initiated commands (not dequeues)
Details - Cluster.cpp: serializes all frames thru cluster (see below) - broker/ConnectionManager: Added handler chain in front of Connection::received. - sys::Fork and ForkWithMessage - abstractions for forking with posix impl. - tests/ForkedBroker.h: test utility to fork a broker process. - broker/SignalHandler: Encapsulated signal handling from qpidd.cpp - Various minor logging & error message improvements to aid debugging. NB: current impl will not scale. It is functional working starting point so we can start testing & profiling to find the right optimizations. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@674107 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/Connection.h')
-rw-r--r--cpp/src/qpid/broker/Connection.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/cpp/src/qpid/broker/Connection.h b/cpp/src/qpid/broker/Connection.h
index 9e713140dd..6b3530366d 100644
--- a/cpp/src/qpid/broker/Connection.h
+++ b/cpp/src/qpid/broker/Connection.h
@@ -56,6 +56,7 @@ class Connection : public sys::ConnectionInputHandler,
{
public:
typedef boost::shared_ptr<Connection> shared_ptr;
+
Connection(sys::ConnectionOutputHandler* out, Broker& broker, const std::string& mgmtId, bool isLink = false);
~Connection ();
@@ -90,10 +91,15 @@ class Connection : public sys::ConnectionInputHandler,
void notifyConnectionForced(const std::string& text);
void setUserId(const string& uid);
+ framing::FrameHandler::Chain& getInChain() { return inChain; }
+
private:
typedef boost::ptr_map<framing::ChannelId, SessionHandler> ChannelMap;
typedef std::vector<Queue::shared_ptr>::iterator queue_iterator;
+ // End of the received handler chain.
+ void receivedLast(framing::AMQFrame& frame);
+
ChannelMap channels;
framing::AMQP_ClientProxy::Connection* client;
ConnectionHandler adapter;
@@ -103,6 +109,9 @@ class Connection : public sys::ConnectionInputHandler,
boost::function0<void> ioCallback;
management::Connection::shared_ptr mgmtObject;
LinkRegistry& links;
+ framing::FrameHandler::MemFunRef<Connection, &Connection::receivedLast> lastInHandler;
+ framing::FrameHandler::Chain inChain;
+
};
}}