diff options
Diffstat (limited to 'cpp/src/qpid/broker/MessageStore.h')
-rw-r--r-- | cpp/src/qpid/broker/MessageStore.h | 64 |
1 files changed, 34 insertions, 30 deletions
diff --git a/cpp/src/qpid/broker/MessageStore.h b/cpp/src/qpid/broker/MessageStore.h index 4c4c21dfba..143e860ec7 100644 --- a/cpp/src/qpid/broker/MessageStore.h +++ b/cpp/src/qpid/broker/MessageStore.h @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -21,12 +21,12 @@ #ifndef _MessageStore_ #define _MessageStore_ -#include "PersistableExchange.h" -#include "PersistableMessage.h" -#include "PersistableQueue.h" -#include "PersistableConfig.h" -#include "RecoveryManager.h" -#include "TransactionalStore.h" +#include "qpid/broker/PersistableExchange.h" +#include "qpid/broker/PersistableMessage.h" +#include "qpid/broker/PersistableQueue.h" +#include "qpid/broker/PersistableConfig.h" +#include "qpid/broker/RecoveryManager.h" +#include "qpid/broker/TransactionalStore.h" #include "qpid/framing/FieldTable.h" #include <qpid/Options.h> @@ -46,12 +46,16 @@ class MessageStore : public TransactionalStore, public Recoverable { public: /** - * init the store, call before any other call. If not called, store - * is free to pick any defaults - * - * @param options Options object provided by concrete store plug in. + * If called after initialization but before recovery, will discard the database + * and reinitialize using an empty store dir. If the parameter pushDownStoreFiles + * is true, the content of the store dir will be moved to a backup dir inside the + * store dir. This is used when cluster nodes recover and must get thier content + * from a cluster sync rather than directly fromt the store. + * + * @param pushDownStoreFiles If true, will move content of the store dir into a + * subdir, leaving the store dir otherwise empty. */ - virtual bool init(const Options* options) = 0; + virtual void truncateInit(const bool pushDownStoreFiles = false) = 0; /** * Record the existence of a durable queue @@ -62,7 +66,7 @@ class MessageStore : public TransactionalStore, public Recoverable { * Destroy a durable queue */ virtual void destroy(PersistableQueue& queue) = 0; - + /** * Record the existence of a durable exchange */ @@ -72,17 +76,17 @@ class MessageStore : public TransactionalStore, public Recoverable { * Destroy a durable exchange */ virtual void destroy(const PersistableExchange& exchange) = 0; - + /** * Record a binding */ - virtual void bind(const PersistableExchange& exchange, const PersistableQueue& queue, + virtual void bind(const PersistableExchange& exchange, const PersistableQueue& queue, const std::string& key, const framing::FieldTable& args) = 0; /** * Forget a binding */ - virtual void unbind(const PersistableExchange& exchange, const PersistableQueue& queue, + virtual void unbind(const PersistableExchange& exchange, const PersistableQueue& queue, const std::string& key, const framing::FieldTable& args) = 0; /** @@ -102,10 +106,10 @@ class MessageStore : public TransactionalStore, public Recoverable { * 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. + * used to load the content or to append to it. */ virtual void stage(const boost::intrusive_ptr<PersistableMessage>& msg) = 0; - + /** * Destroys a previously staged message. This only needs * to be called if the message is never enqueued. (Once @@ -119,7 +123,7 @@ class MessageStore : public TransactionalStore, public Recoverable { */ virtual void appendContent(const boost::intrusive_ptr<const PersistableMessage>& msg, const std::string& data) = 0; - + /** * Loads (a section) of content data for the specified * message (previously stored through a call to stage or @@ -128,18 +132,18 @@ class MessageStore : public TransactionalStore, public Recoverable { * content should be loaded, not the headers or related * meta-data). */ - virtual void loadContent(const qpid::broker::PersistableQueue& queue, + virtual void loadContent(const qpid::broker::PersistableQueue& queue, const boost::intrusive_ptr<const PersistableMessage>& msg, std::string& data, uint64_t offset, uint32_t length) = 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. + * message is on the given queue. * * Note: that this is async so the return of the function does * not mean the opperation is complete. - * + * * @param msg the message to enqueue * @param queue the name of the queue onto which it is to be enqueued * @param xid (a pointer to) an identifier of the @@ -149,7 +153,7 @@ class MessageStore : public TransactionalStore, public Recoverable { virtual void enqueue(TransactionContext* ctxt, const 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 @@ -157,7 +161,7 @@ class MessageStore : public TransactionalStore, public Recoverable { * * Note: that this is async so the return of the function does * not mean the opperation is complete. - * + * * @param msg the message to dequeue * @param queue the name of the queue from which it is to be dequeued * @param xid (a pointer to) an identifier of the @@ -173,22 +177,22 @@ class MessageStore : public TransactionalStore, public Recoverable { * * Note: that this is async so the return of the function does * not mean the opperation is complete. - * + * * @param queue the name of the queue from which it is to be dequeued */ virtual void flush(const qpid::broker::PersistableQueue& queue)=0; /** * Returns the number of outstanding AIO's for a given queue - * - * If 0, than all the enqueue / dequeues have been stored + * + * If 0, than all the enqueue / dequeues have been stored * to disk * * @param queue the name of the queue to check for outstanding AIO */ virtual uint32_t outstandingQueueAIO(const PersistableQueue& queue) = 0; - + virtual ~MessageStore(){} }; |