#include <MessageStore.h>
Public Member Functions | |
virtual bool | init (const Options *options)=0 |
init the store, call before any other call. | |
virtual void | create (PersistableQueue &queue, const framing::FieldTable &args)=0 |
Record the existence of a durable queue. | |
virtual void | destroy (PersistableQueue &queue)=0 |
Destroy a durable queue. | |
virtual void | create (const PersistableExchange &exchange, const framing::FieldTable &args)=0 |
Record the existence of a durable exchange. | |
virtual void | destroy (const PersistableExchange &exchange)=0 |
Destroy a durable exchange. | |
virtual void | bind (const PersistableExchange &exchange, const PersistableQueue &queue, const std::string &key, const framing::FieldTable &args)=0 |
Record a binding. | |
virtual void | unbind (const PersistableExchange &exchange, const PersistableQueue &queue, const std::string &key, const framing::FieldTable &args)=0 |
Forget a binding. | |
virtual void | create (const PersistableConfig &config)=0 |
Record generic durable configuration. | |
virtual void | destroy (const PersistableConfig &config)=0 |
Destroy generic durable configuration. | |
virtual void | stage (boost::intrusive_ptr< PersistableMessage > &msg)=0 |
Stores a messages before it has been enqueued (enqueueing automatically stores the message so this is only required if storage is required prior to that point). | |
virtual void | destroy (PersistableMessage &msg)=0 |
Destroys a previously staged message. | |
virtual void | appendContent (boost::intrusive_ptr< const PersistableMessage > &msg, const std::string &data)=0 |
Appends content to a previously staged message. | |
virtual void | loadContent (const qpid::broker::PersistableQueue &queue, boost::intrusive_ptr< const PersistableMessage > &msg, std::string &data, uint64_t offset, uint32_t length)=0 |
Loads (a section) of content data for the specified message (previously stored through a call to stage or enqueue) into data. | |
virtual void | enqueue (TransactionContext *ctxt, boost::intrusive_ptr< PersistableMessage > &msg, const PersistableQueue &queue)=0 |
Enqueues a message, storing the message if it has not been previously stored and recording that the given message is on the given queue. | |
virtual void | dequeue (TransactionContext *ctxt, boost::intrusive_ptr< PersistableMessage > &msg, const PersistableQueue &queue)=0 |
Dequeues a message, recording that the given message is no longer on the given queue and deleting the message if it is no longer on any other queue. | |
virtual void | flush (const qpid::broker::PersistableQueue &queue)=0 |
Flushes all async messages to disk for the specified queue. | |
virtual u_int32_t | outstandingQueueAIO (const PersistableQueue &queue)=0 |
Returns the number of outstanding AIO's for a given queue. |
(In all methods, any pointers/references to queues or messages are valid only for the duration of the call).
virtual bool qpid::broker::MessageStore::init | ( | const Options * | options | ) | [pure virtual] |
init the store, call before any other call.
If not called, store is free to pick any defaults
dir | the directory to create logs/db's | |
async | true, enable async, false, enable sync | |
force | true, delete data on mode change, false, error on mode change |
Implemented in qpid::broker::MessageStoreModule, and qpid::broker::NullMessageStore.
virtual void qpid::broker::MessageStore::stage | ( | boost::intrusive_ptr< PersistableMessage > & | msg | ) | [pure virtual] |
Stores a messages before it has been enqueued (enqueueing automatically stores the message so this is only required if storage is required prior to that point).
If the message has not yet been stored it will store the headers as well as any content passed in. A persistence id will be set on the message which can be used to load the content or to append to it.
TODO If it is know which queue the message is to be staged/ release to in cases of flowing tmp messages to disk for memory conservation set the queue ptr. This allows the store to optimize the read/writes for that queue and avoid searching based on id. Set queue = 0 for large message staging when the queue is not known.
Implemented in qpid::broker::MessageStoreModule, and qpid::broker::NullMessageStore.
virtual void qpid::broker::MessageStore::destroy | ( | PersistableMessage & | msg | ) | [pure virtual] |
Destroys a previously staged message.
This only needs to be called if the message is never enqueued. (Once enqueued, deletion will be automatic when the message is dequeued from all queues it was enqueued onto).
Implemented in qpid::broker::MessageStoreModule, and qpid::broker::NullMessageStore.
virtual void qpid::broker::MessageStore::loadContent | ( | const qpid::broker::PersistableQueue & | queue, | |
boost::intrusive_ptr< const PersistableMessage > & | msg, | |||
std::string & | data, | |||
uint64_t | offset, | |||
uint32_t | length | |||
) | [pure virtual] |
Loads (a section) of content data for the specified message (previously stored through a call to stage or enqueue) into data.
The offset refers to the content only (i.e. an offset of 0 implies that the start of the content should be loaded, not the headers or related meta-data).
Implemented in qpid::broker::MessageStoreModule, and qpid::broker::NullMessageStore.
virtual void qpid::broker::MessageStore::enqueue | ( | TransactionContext * | ctxt, | |
boost::intrusive_ptr< PersistableMessage > & | msg, | |||
const PersistableQueue & | queue | |||
) | [pure virtual] |
Enqueues a message, storing the message if it has not been previously stored and recording that the given message is on the given queue.
Note: that this is async so the return of the function does not mean the opperation is complete.
msg | the message to enqueue | |
queue | the name of the queue onto which it is to be enqueued | |
xid | (a pointer to) an identifier of the distributed transaction in which the operation takes place or null for 'local' transactions |
Implemented in qpid::broker::MessageStoreModule, and qpid::broker::NullMessageStore.
virtual void qpid::broker::MessageStore::dequeue | ( | TransactionContext * | ctxt, | |
boost::intrusive_ptr< PersistableMessage > & | msg, | |||
const PersistableQueue & | queue | |||
) | [pure virtual] |
Dequeues a message, recording that the given message is no longer on the given queue and deleting the message if it is no longer on any other queue.
Note: that this is async so the return of the function does not mean the opperation is complete.
msg | the message to dequeue | |
queue | the name of the queue from which it is to be dequeued | |
xid | (a pointer to) an identifier of the distributed transaction in which the operation takes place or null for 'local' transactions |
Implemented in qpid::broker::MessageStoreModule, and qpid::broker::NullMessageStore.
virtual void qpid::broker::MessageStore::flush | ( | const qpid::broker::PersistableQueue & | queue | ) | [pure virtual] |
Flushes all async messages to disk for the specified queue.
Note: that this is async so the return of the function does not mean the opperation is complete.
queue | the name of the queue from which it is to be dequeued |
Implemented in qpid::broker::MessageStoreModule, and qpid::broker::NullMessageStore.
virtual u_int32_t qpid::broker::MessageStore::outstandingQueueAIO | ( | const PersistableQueue & | queue | ) | [pure virtual] |
Returns the number of outstanding AIO's for a given queue.
If 0, than all the enqueue / dequeues have been stored to disk
queue | the name of the queue to check for outstanding AIO |
Implemented in qpid::broker::MessageStoreModule, and qpid::broker::NullMessageStore.