diff options
Diffstat (limited to 'cpp/src/qpid/client/AckPolicy.h')
| -rw-r--r-- | cpp/src/qpid/client/AckPolicy.h | 29 |
1 files changed, 6 insertions, 23 deletions
diff --git a/cpp/src/qpid/client/AckPolicy.h b/cpp/src/qpid/client/AckPolicy.h index d00df1ef26..2faa600556 100644 --- a/cpp/src/qpid/client/AckPolicy.h +++ b/cpp/src/qpid/client/AckPolicy.h @@ -23,6 +23,7 @@ #include "qpid/framing/SequenceSet.h" #include "qpid/client/AsyncSession.h" +#include "qpid/client/Message.h" namespace qpid { namespace client { @@ -40,32 +41,14 @@ class AckPolicy public: /** + * Sends accepts and marks completion of received transfers. + * *@param n: acknowledge every n messages. *n==0 means no automatic acknowledgement. */ - AckPolicy(size_t n=1) : interval(n), count(n) {} - - void ack(const Message& msg, AsyncSession session) { - accepted.add(msg.getId()); - if (!interval) return; - if (--count==0) { - session.markCompleted(msg.getId(), false, true); - session.messageAccept(accepted); - accepted.clear(); - count = interval; - } else { - session.markCompleted(msg.getId(), false, false); - } - } - - void ackOutstanding(AsyncSession session) { - if (!accepted.empty()) { - session.messageAccept(accepted); - accepted.clear(); - session.sendCompletion(); - } - } -}; + AckPolicy(size_t n=1); + void ack(const Message& msg, AsyncSession session); + void ackOutstanding(AsyncSession session);}; }} // namespace qpid::client |
