diff options
| author | Gordon Sim <gsim@apache.org> | 2010-04-06 19:08:28 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2010-04-06 19:08:28 +0000 |
| commit | cea30bd45679ae39de64cb93e25d914abc937ba0 (patch) | |
| tree | be972f36e5abea1b17bf5cd85fba403f6f934eaa /cpp/src/qpid/client | |
| parent | 4517306f15bb760814a75797f4b229132114ff6d (diff) | |
| download | qpid-python-cea30bd45679ae39de64cb93e25d914abc937ba0.tar.gz | |
QPID-664: added method to release messages
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@931275 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/client')
| -rw-r--r-- | cpp/src/qpid/client/amqp0_10/SessionImpl.cpp | 12 | ||||
| -rw-r--r-- | cpp/src/qpid/client/amqp0_10/SessionImpl.h | 10 |
2 files changed, 22 insertions, 0 deletions
diff --git a/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp b/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp index bb0a735fde..9efafb1d16 100644 --- a/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp +++ b/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp @@ -92,6 +92,11 @@ void SessionImpl::reject(qpid::messaging::Message& m) execute1<Reject>(m); } +void SessionImpl::release(qpid::messaging::Message& m) +{ + execute1<Release>(m); +} + void SessionImpl::close() { //close all the senders and receivers (get copy of names and then @@ -418,6 +423,13 @@ void SessionImpl::rejectImpl(qpid::messaging::Message& m) session.messageReject(set); } +void SessionImpl::releaseImpl(qpid::messaging::Message& m) +{ + SequenceSet set; + set.add(MessageImplAccess::get(m).getInternalId()); + session.messageRelease(set); +} + void SessionImpl::receiverCancelled(const std::string& name) { receivers.erase(name); diff --git a/cpp/src/qpid/client/amqp0_10/SessionImpl.h b/cpp/src/qpid/client/amqp0_10/SessionImpl.h index ab29d2c1e1..5f9b23fb14 100644 --- a/cpp/src/qpid/client/amqp0_10/SessionImpl.h +++ b/cpp/src/qpid/client/amqp0_10/SessionImpl.h @@ -60,6 +60,7 @@ class SessionImpl : public qpid::messaging::SessionImpl void rollback(); void acknowledge(bool sync); void reject(qpid::messaging::Message&); + void release(qpid::messaging::Message&); void close(); void sync(); void flush(); @@ -123,6 +124,7 @@ class SessionImpl : public qpid::messaging::SessionImpl void rollbackImpl(); void acknowledgeImpl(); void rejectImpl(qpid::messaging::Message&); + void releaseImpl(qpid::messaging::Message&); void closeImpl(); void syncImpl(); void flushImpl(); @@ -177,6 +179,14 @@ class SessionImpl : public qpid::messaging::SessionImpl Reject(SessionImpl& i, qpid::messaging::Message& m) : Command(i), message(m) {} void operator()() { impl.rejectImpl(message); } }; + + struct Release : Command + { + qpid::messaging::Message& message; + + Release(SessionImpl& i, qpid::messaging::Message& m) : Command(i), message(m) {} + void operator()() { impl.releaseImpl(message); } + }; struct CreateSender; struct CreateReceiver; |
