summaryrefslogtreecommitdiff
path: root/cpp/lib/broker/BrokerQueue.h
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2007-03-30 15:50:07 +0000
committerGordon Sim <gsim@apache.org>2007-03-30 15:50:07 +0000
commit33d8343d134a391fa7d0a338fafad1a22ff58dc3 (patch)
tree7c8b9ef3ea62852eb38548be87f908b2892e12a2 /cpp/lib/broker/BrokerQueue.h
parent8fc571ee337add8f2c4ab1f1ebc0c4784c58e2bf (diff)
downloadqpid-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.h18
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);
};
}
}