diff options
author | Alan Conway <aconway@apache.org> | 2009-06-16 21:21:09 +0000 |
---|---|---|
committer | Alan Conway <aconway@apache.org> | 2009-06-16 21:21:09 +0000 |
commit | 80d65b38008d9b7f31c825508819f9600d63b63c (patch) | |
tree | 316862bff35f1cae6f0d1152dcf4a6e3b0f967ed /cpp/src/qpid/broker/SessionState.cpp | |
parent | f5e98a6dfb8c4defe22755340f440e6f16c2559a (diff) | |
download | qpid-python-80d65b38008d9b7f31c825508819f9600d63b63c.tar.gz |
Performance improvements in AggregateOutput and SemanticState.
Replaced AggregateOutput hierarchy with a flat list per connection
holding only the OutputTasks that are potentially active. Tasks are
droped from the list as soon as they return false, and added back when
they may have output.
Inlined frequently-used SequenceNumber functions.
Replace std::list in QueueListeners with std::vector.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@785408 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/SessionState.cpp')
-rw-r--r-- | cpp/src/qpid/broker/SessionState.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/cpp/src/qpid/broker/SessionState.cpp b/cpp/src/qpid/broker/SessionState.cpp index f5e9139a76..b465a65bd3 100644 --- a/cpp/src/qpid/broker/SessionState.cpp +++ b/cpp/src/qpid/broker/SessionState.cpp @@ -99,6 +99,11 @@ AMQP_ClientProxy& SessionState::getProxy() { return handler->getProxy(); } +uint16_t SessionState::getChannel() const { + assert(isAttached()); + return handler->getChannel(); +} + ConnectionState& SessionState::getConnection() { assert(isAttached()); return handler->getConnection(); @@ -119,8 +124,7 @@ void SessionState::detach() { void SessionState::disableOutput() { - semanticState.detached();//prevents further activateOutput calls until reattached - getConnection().outputTasks.removeOutputTask(&semanticState); + semanticState.detached(); //prevents further activateOutput calls until reattached } void SessionState::attach(SessionHandler& h) { @@ -362,10 +366,6 @@ void SessionState::readyToSend() { QPID_LOG(debug, getId() << ": ready to send, activating output."); assert(handler); semanticState.attached(); - sys::AggregateOutput& tasks = handler->getConnection().outputTasks; - tasks.addOutputTask(&semanticState); - tasks.activateOutput(); - if (rateFlowcontrol) { qpid::sys::ScopedLock<Mutex> l(rateLock); // Issue initial credit - use a heuristic here issue min of 300 messages or 1 secs worth |