diff options
Diffstat (limited to 'cpp/src/qpid/broker/MessageDeque.h')
-rw-r--r-- | cpp/src/qpid/broker/MessageDeque.h | 32 |
1 files changed, 10 insertions, 22 deletions
diff --git a/cpp/src/qpid/broker/MessageDeque.h b/cpp/src/qpid/broker/MessageDeque.h index c5670b2a72..ec67476926 100644 --- a/cpp/src/qpid/broker/MessageDeque.h +++ b/cpp/src/qpid/broker/MessageDeque.h @@ -22,8 +22,7 @@ * */ #include "qpid/broker/Messages.h" -#include "qpid/broker/QueuedMessage.h" -#include <deque> +#include "qpid/broker/IndexedDeque.h" namespace qpid { namespace broker { @@ -36,31 +35,20 @@ class MessageDeque : public Messages public: MessageDeque(); size_t size(); - bool deleted(const QueuedMessage&); - void release(const QueuedMessage&); - bool acquire(const framing::SequenceNumber&, QueuedMessage&); - bool find(const framing::SequenceNumber&, QueuedMessage&); - bool browse(const framing::SequenceNumber&, QueuedMessage&, bool); - bool consume(QueuedMessage&); - bool push(const QueuedMessage& added, QueuedMessage& removed); - void updateAcquired(const QueuedMessage& acquired); - void setPosition(const framing::SequenceNumber&); + bool deleted(const QueueCursor&); + void publish(const Message& added); + Message* next(QueueCursor&); + Message* release(const QueueCursor& cursor); + Message* find(const QueueCursor&); + Message* find(const framing::SequenceNumber&, QueueCursor*); + void foreach(Functor); - void removeIf(Predicate); - // For use by other Messages implementations that use MessageDeque as a FIFO index - // and keep pointers to its elements in their own indexing strctures. - void clean(); - QueuedMessage* releasePtr(const QueuedMessage&); - QueuedMessage* pushPtr(const QueuedMessage& added); + void resetCursors(); private: - typedef std::deque<QueuedMessage> Deque; + typedef IndexedDeque<Message> Deque; Deque messages; - size_t available; - size_t head; - - size_t index(const framing::SequenceNumber&); }; }} // namespace qpid::broker |