summaryrefslogtreecommitdiff
path: root/qpid/cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2008-01-11 15:29:05 +0000
committerGordon Sim <gsim@apache.org>2008-01-11 15:29:05 +0000
commit355f3d9f24439ced11a250cc387fd9d73faec5b6 (patch)
tree8a45271cd6a41fd5f138c604b423ede85f10847b /qpid/cpp
parentb1d7631b3e92939735bfbee49091da0f1b5d63a7 (diff)
downloadqpid-python-355f3d9f24439ced11a250cc387fd9d73faec5b6.tar.gz
Allow more than one message to be encoded into a single buffer if available.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@611205 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp')
-rw-r--r--qpid/cpp/src/qpid/sys/AsynchIOAcceptor.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/qpid/cpp/src/qpid/sys/AsynchIOAcceptor.cpp b/qpid/cpp/src/qpid/sys/AsynchIOAcceptor.cpp
index c2c4b545f9..dd8fe957bd 100644
--- a/qpid/cpp/src/qpid/sys/AsynchIOAcceptor.cpp
+++ b/qpid/cpp/src/qpid/sys/AsynchIOAcceptor.cpp
@@ -304,8 +304,18 @@ void AsynchIOHandler::idle(AsynchIO&){
buffUsed += frameSize;
QPID_LOG(trace, "SENT [" << identifier << "]: " << frame);
- if (frameQueue.empty())
- break;
+ if (frameQueue.empty()) {
+ //if we have run out of frames, allow upper layers to
+ //generate more
+ if (!frameQueueClosed) {
+ inputHandler->doOutput();
+ }
+ if (frameQueue.empty()) {
+ //if there are still no frames, we have no more to
+ //do
+ break;
+ }
+ }
frame = frameQueue.front();
frameSize = frame.size();
}