diff options
| author | Gordon Sim <gsim@apache.org> | 2007-07-03 14:54:19 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2007-07-03 14:54:19 +0000 |
| commit | 338f2196c07ea6ce2cd40941bca9ef11e95be2bf (patch) | |
| tree | 63ac3fe82c7d668850608ea19334997960089062 /cpp/src/qpid/broker/BrokerQueue.h | |
| parent | e7f82f3d5b39c77ee913ee4cd6b4bf1bdc8b13bc (diff) | |
| download | qpid-python-338f2196c07ea6ce2cd40941bca9ef11e95be2bf.tar.gz | |
Fix (and test) for QPID-407. Messages are requeued at the head rather than the tail.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@552862 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/BrokerQueue.h')
| -rw-r--r-- | cpp/src/qpid/broker/BrokerQueue.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/cpp/src/qpid/broker/BrokerQueue.h b/cpp/src/qpid/broker/BrokerQueue.h index 35ffe2bc13..e39e58d35d 100644 --- a/cpp/src/qpid/broker/BrokerQueue.h +++ b/cpp/src/qpid/broker/BrokerQueue.h @@ -23,7 +23,7 @@ */ #include <vector> #include <memory> -#include <queue> +#include <deque> #include <boost/shared_ptr.hpp> #include "qpid/framing/amqp_types.h" #include "ConnectionToken.h" @@ -57,7 +57,7 @@ namespace qpid { */ class Queue : public PersistableQueue{ typedef std::vector<Consumer*> Consumers; - typedef std::queue<Message::shared_ptr> Messages; + typedef std::deque<Message::shared_ptr> Messages; const string name; const bool autodelete; @@ -109,6 +109,13 @@ namespace qpid { */ void process(Message::shared_ptr& msg); /** + * Returns a message to the in-memory queue (due to lack + * of acknowledegement from a receiver). If a consumer is + * available it will be dispatched immediately, else it + * will be returned to the front of the queue. + */ + void requeue(Message::shared_ptr& msg); + /** * Used during recovery to add stored messages back to the queue */ void recover(Message::shared_ptr& msg); |
