diff options
author | Gordon Sim <gsim@apache.org> | 2008-04-21 14:37:03 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2008-04-21 14:37:03 +0000 |
commit | 61647950e1c4e6b1efb0a1b3f3b220783680103f (patch) | |
tree | f666cacf0e56079e23ef0a9c881d26baa7d5a1fe /cpp/src/qpid/client/Channel.cpp | |
parent | ceca53c26ab6ed56929dc558b3255bdd83090315 (diff) | |
download | qpid-python-61647950e1c4e6b1efb0a1b3f3b220783680103f.tar.gz |
QPID-920: send message-accept for acks (as well as completion)
* AckPolicy now maintains a set of transfered messages for cumulative accepts
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@650159 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/client/Channel.cpp')
-rw-r--r-- | cpp/src/qpid/client/Channel.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/cpp/src/qpid/client/Channel.cpp b/cpp/src/qpid/client/Channel.cpp index ae9f78483d..f32b5e2614 100644 --- a/cpp/src/qpid/client/Channel.cpp +++ b/cpp/src/qpid/client/Channel.cpp @@ -23,6 +23,7 @@ #include <sstream> #include "Channel.h" #include "qpid/sys/Monitor.h" +#include "AckPolicy.h" #include "Message.h" #include "Connection.h" #include "Demux.h" @@ -202,8 +203,10 @@ bool Channel::get(Message& msg, const Queue& _queue, AckMode ackMode) { if (incoming->tryPop(p)) { msg.populate(*p); if (ackMode == AUTO_ACK) { - msg.setSession(session); - msg.acknowledge(false, true); + AckPolicy acker; + acker.ack(msg, session); + } else { + session.markCompleted(msg.getId(), false, false); } return true; } @@ -260,7 +263,7 @@ void Channel::dispatch(FrameSet& content, const std::string& destination) bool send = i->second.ackMode == AUTO_ACK || (prefetch && ++(i->second.count) > (prefetch / 2)); if (send) i->second.count = 0; - session.getExecution().markCompleted(content.getId(), true, send); + session.markCompleted(content.getId(), true, send); } } else { QPID_LOG(warning, "Dropping message for unrecognised consumer: " << destination); |