diff options
| author | Gordon Sim <gsim@apache.org> | 2009-09-14 10:21:49 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2009-09-14 10:21:49 +0000 |
| commit | e5a9bace572937edff916e3d3f2205e3e54fdf05 (patch) | |
| tree | adc8e5e5fa1cd558e0868245889670c19683a93e /cpp/src/qpid/client/amqp0_10/SessionImpl.cpp | |
| parent | e2e4f4e3450d13176a84b93736abb21f9a9df1fe (diff) | |
| download | qpid-python-e5a9bace572937edff916e3d3f2205e3e54fdf05.tar.gz | |
Added available and pendingAck properties to Receiver; added capacity and pending properties to Sender.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@814562 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/client/amqp0_10/SessionImpl.cpp')
| -rw-r--r-- | cpp/src/qpid/client/amqp0_10/SessionImpl.cpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp b/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp index 0e6c430d89..bc6289d84b 100644 --- a/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp +++ b/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp @@ -298,6 +298,61 @@ bool SessionImpl::fetch(qpid::messaging::Message& message, qpid::sys::Duration t } } +uint32_t SessionImpl::available() +{ + return get1<Available, uint32_t>((const std::string*) 0); +} +uint32_t SessionImpl::available(const std::string& destination) +{ + return get1<Available, uint32_t>(&destination); +} + +struct SessionImpl::Available : Command +{ + const std::string* destination; + uint32_t result; + + Available(SessionImpl& i, const std::string* d) : Command(i), destination(d), result(0) {} + void operator()() { result = impl.availableImpl(destination); } +}; + +uint32_t SessionImpl::availableImpl(const std::string* destination) +{ + if (destination) { + return incoming.available(*destination); + } else { + return incoming.available(); + } +} + +uint32_t SessionImpl::pendingAck() +{ + return get1<PendingAck, uint32_t>((const std::string*) 0); +} + +uint32_t SessionImpl::pendingAck(const std::string& destination) +{ + return get1<PendingAck, uint32_t>(&destination); +} + +struct SessionImpl::PendingAck : Command +{ + const std::string* destination; + uint32_t result; + + PendingAck(SessionImpl& i, const std::string* d) : Command(i), destination(d), result(0) {} + void operator()() { result = impl.pendingAckImpl(destination); } +}; + +uint32_t SessionImpl::pendingAckImpl(const std::string* destination) +{ + if (destination) { + return incoming.pendingAccept(*destination); + } else { + return incoming.pendingAccept(); + } +} + void SessionImpl::syncImpl() { session.sync(); |
