diff options
author | Gordon Sim <gsim@apache.org> | 2007-03-30 15:50:07 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2007-03-30 15:50:07 +0000 |
commit | 33d8343d134a391fa7d0a338fafad1a22ff58dc3 (patch) | |
tree | 7c8b9ef3ea62852eb38548be87f908b2892e12a2 /cpp/lib/broker/BrokerQueue.h | |
parent | 8fc571ee337add8f2c4ab1f1ebc0c4784c58e2bf (diff) | |
download | qpid-python-33d8343d134a391fa7d0a338fafad1a22ff58dc3.tar.gz |
Refactored the MessageStore interface to restrict visibility of broker core from store implementations.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@524139 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/lib/broker/BrokerQueue.h')
-rw-r--r-- | cpp/lib/broker/BrokerQueue.h | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/cpp/lib/broker/BrokerQueue.h b/cpp/lib/broker/BrokerQueue.h index 45cf317037..20d81e4e87 100644 --- a/cpp/lib/broker/BrokerQueue.h +++ b/cpp/lib/broker/BrokerQueue.h @@ -31,6 +31,7 @@ #include <BrokerMessage.h> #include <FieldTable.h> #include <sys/Monitor.h> +#include "PersistableQueue.h" #include <QueuePolicy.h> // TODO aconway 2007-02-06: Use auto_ptr and boost::ptr_vector to @@ -39,6 +40,7 @@ namespace qpid { namespace broker { class MessageStore; + class QueueRegistry; /** * Thrown when exclusive access would be violated. @@ -51,7 +53,7 @@ namespace qpid { * registered consumers or be stored until dequeued or until one * or more consumers registers. */ - class Queue{ + class Queue : public PersistableQueue{ typedef std::vector<Consumer*> Consumers; typedef std::queue<Message::shared_ptr> Messages; @@ -119,22 +121,28 @@ namespace qpid { inline const string& getName() const { return name; } inline const bool isExclusiveOwner(const ConnectionToken* const o) const { return o == owner; } inline bool hasExclusiveConsumer() const { return exclusive; } - inline uint64_t getPersistenceId() const { return persistenceId; } - inline void setPersistenceId(uint64_t _persistenceId) const { persistenceId = _persistenceId; } bool canAutoDelete() const; - void enqueue(TransactionContext* ctxt, Message::shared_ptr& msg, const string * const xid); + void enqueue(TransactionContext* ctxt, Message::shared_ptr& msg); /** * dequeue from store (only done once messages is acknowledged) */ - void dequeue(TransactionContext* ctxt, Message::shared_ptr& msg, const string * const xid); + void dequeue(TransactionContext* ctxt, Message::shared_ptr& msg); /** * dequeues from memory only */ Message::shared_ptr dequeue(); const QueuePolicy* const getPolicy(); + + //PersistableQueue support: + uint64_t getPersistenceId() const; + void setPersistenceId(uint64_t persistenceId); + void encode(framing::Buffer& buffer) const; + uint32_t encodedSize() const; + + static Queue::shared_ptr decode(QueueRegistry& queues, framing::Buffer& buffer); }; } } |