summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/Connection.h
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2011-01-11 11:02:05 +0000
committerGordon Sim <gsim@apache.org>2011-01-11 11:02:05 +0000
commit82f2bf33f3c39bdcde2720420bb406d9f405ac68 (patch)
tree872d88e7ba816d3f2a48d5fc08a57bb96eabe634 /cpp/src/qpid/broker/Connection.h
parentd3cc015488955b0baa60cbd9b8dbe579aed26d40 (diff)
downloadqpid-python-82f2bf33f3c39bdcde2720420bb406d9f405ac68.tar.gz
QPID-2991: added message counts to connection stats; fixed xxxToClient stats
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1057578 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/Connection.h')
-rw-r--r--cpp/src/qpid/broker/Connection.h26
1 files changed, 24 insertions, 2 deletions
diff --git a/cpp/src/qpid/broker/Connection.h b/cpp/src/qpid/broker/Connection.h
index d978187e0c..b751848d73 100644
--- a/cpp/src/qpid/broker/Connection.h
+++ b/cpp/src/qpid/broker/Connection.h
@@ -111,8 +111,8 @@ class Connection : public sys::ConnectionInputHandler,
ManagementMethod (uint32_t methodId, management::Args& args, std::string&);
void requestIOProcessing (boost::function0<void>);
- void recordFromServer (framing::AMQFrame& frame);
- void recordFromClient (framing::AMQFrame& frame);
+ void recordFromServer (const framing::AMQFrame& frame);
+ void recordFromClient (const framing::AMQFrame& frame);
std::string getAuthMechanism();
std::string getAuthCredentials();
std::string getUsername();
@@ -181,7 +181,29 @@ class Connection : public sys::ConnectionInputHandler,
ErrorListener* errorListener;
uint64_t objectId;
bool shadow;
+ /**
+ * Chained ConnectionOutputHandler that allows outgoing frames to be
+ * tracked (for updating mgmt stats).
+ */
+ class OutboundFrameTracker : public sys::ConnectionOutputHandler
+ {
+ public:
+ OutboundFrameTracker(Connection&);
+ void close();
+ size_t getBuffered() const;
+ void abort();
+ void activateOutput();
+ void giveReadCredit(int32_t credit);
+ void send(framing::AMQFrame&);
+ void wrap(sys::ConnectionOutputHandlerPtr&);
+ private:
+ Connection& con;
+ sys::ConnectionOutputHandler* next;
+ };
+ OutboundFrameTracker outboundTracker;
+
+ void sent(const framing::AMQFrame& f);
public:
qmf::org::apache::qpid::broker::Connection* getMgmtObject() { return mgmtObject; }
};