diff options
Diffstat (limited to 'cpp/src/qpid/broker')
| -rw-r--r-- | cpp/src/qpid/broker/Queue.cpp | 9 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/Queue.h | 9 |
2 files changed, 16 insertions, 2 deletions
diff --git a/cpp/src/qpid/broker/Queue.cpp b/cpp/src/qpid/broker/Queue.cpp index bbdbf19e92..ffe743bac1 100644 --- a/cpp/src/qpid/broker/Queue.cpp +++ b/cpp/src/qpid/broker/Queue.cpp @@ -202,7 +202,7 @@ void Queue::process(boost::intrusive_ptr<Message>& msg){ } void Queue::requeue(const QueuedMessage& msg){ - if (policy.get() && !policy->isEnqueued(msg)) return; + if (!isEnqueued(msg)) return; QueueListeners::NotificationSet copy; { @@ -691,7 +691,7 @@ bool Queue::dequeue(TransactionContext* ctxt, const QueuedMessage& msg) { { Mutex::ScopedLock locker(messageLock); - if (policy.get() && !policy->isEnqueued(msg)) return false; + if (!isEnqueued(msg)) return false; if (!ctxt) { dequeued(msg); } @@ -1019,3 +1019,8 @@ void Queue::enqueued(const QueuedMessage& m) QPID_LOG(warning, "Queue informed of enqueued message that has no payload"); } } + +bool Queue::isEnqueued(const QueuedMessage& msg) +{ + return policy.get() && policy->isEnqueued(msg); +} diff --git a/cpp/src/qpid/broker/Queue.h b/cpp/src/qpid/broker/Queue.h index de60362854..a8b775cba7 100644 --- a/cpp/src/qpid/broker/Queue.h +++ b/cpp/src/qpid/broker/Queue.h @@ -257,6 +257,15 @@ namespace qpid { * clustered broker. */ void enqueued(const QueuedMessage& msg); + + /** + * Test whether the specified message (identified by its + * sequence/position), is still enqueued (note this + * doesn't mean it is available for delivery as it may + * have been delievered to a subscriber who has not yet + * accepted it). + */ + bool isEnqueued(const QueuedMessage& msg); /** * Gets the next available message |
