summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/BrokerQueue.h
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2007-07-03 14:54:19 +0000
committerGordon Sim <gsim@apache.org>2007-07-03 14:54:19 +0000
commit338f2196c07ea6ce2cd40941bca9ef11e95be2bf (patch)
tree63ac3fe82c7d668850608ea19334997960089062 /cpp/src/qpid/broker/BrokerQueue.h
parente7f82f3d5b39c77ee913ee4cd6b4bf1bdc8b13bc (diff)
downloadqpid-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.h11
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);