summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorKim van der Riet <kpvdr@apache.org>2012-05-04 14:16:21 +0000
committerKim van der Riet <kpvdr@apache.org>2012-05-04 14:16:21 +0000
commitc73f9286ebff93a6c8dbc29cf05e258c4b55c976 (patch)
tree3ebfcc1863971d19c6f0fcbacaa412a02f644368 /cpp/src
parent12702f1464b22334acb5e459791f949eb4a9e2d5 (diff)
downloadqpid-python-c73f9286ebff93a6c8dbc29cf05e258c4b55c976.tar.gz
QPID-3858: WIP - Updates to async store interface. Removed the errors/exception classes, will use qpid exceptions instead. Some class renaming.
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/asyncstore@1333978 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/CMakeLists.txt1
-rw-r--r--cpp/src/Makefile.am2
-rw-r--r--cpp/src/qpid/broker/AsyncStore.cpp157
-rw-r--r--cpp/src/qpid/broker/AsyncStore.h288
-rw-r--r--cpp/src/qpid/broker/AsyncStoreErrors.h59
-rw-r--r--cpp/src/qpid/broker/AsyncStoreToken.h101
-rw-r--r--cpp/src/qpid/broker/Broker.cpp5
-rw-r--r--cpp/src/qpid/broker/Broker.h2
-rw-r--r--cpp/src/qpid/broker/BrokerContext.h15
-rw-r--r--cpp/src/qpid/broker/QueueEvents.h2
-rw-r--r--cpp/src/qpid/messaging/PrivateImplRef.h2
11 files changed, 131 insertions, 503 deletions
diff --git a/cpp/src/CMakeLists.txt b/cpp/src/CMakeLists.txt
index 72c6b5c4f1..805e1bb9af 100644
--- a/cpp/src/CMakeLists.txt
+++ b/cpp/src/CMakeLists.txt
@@ -1043,6 +1043,7 @@ set (qpidbroker_SOURCES
qpid/amqp_0_10/Connection.cpp
qpid/broker/AsyncStore.cpp
qpid/broker/Broker.cpp
+ qpid/broker/BrokerContext.h
qpid/broker/Credit.cpp
qpid/broker/Exchange.cpp
qpid/broker/ExpiryPolicy.cpp
diff --git a/cpp/src/Makefile.am b/cpp/src/Makefile.am
index 911621295b..7162245c53 100644
--- a/cpp/src/Makefile.am
+++ b/cpp/src/Makefile.am
@@ -532,6 +532,7 @@ libqpidbroker_la_SOURCES = \
qpid/broker/Bridge.h \
qpid/broker/Broker.cpp \
qpid/broker/Broker.h \
+ qpid/broker/BrokerContext.h \
qpid/broker/BrokerImportExport.h \
qpid/broker/Connection.cpp \
qpid/broker/Connection.h \
@@ -672,7 +673,6 @@ libqpidbroker_la_SOURCES = \
qpid/broker/SignalHandler.cpp \
qpid/broker/SignalHandler.h \
qpid/broker/StatefulQueueObserver.h \
- qpid/broker/StoreToken.h \
qpid/broker/System.cpp \
qpid/broker/System.h \
qpid/broker/ThresholdAlerts.cpp \
diff --git a/cpp/src/qpid/broker/AsyncStore.cpp b/cpp/src/qpid/broker/AsyncStore.cpp
index aba75669fd..ff3e77dba5 100644
--- a/cpp/src/qpid/broker/AsyncStore.cpp
+++ b/cpp/src/qpid/broker/AsyncStore.cpp
@@ -22,137 +22,30 @@
namespace qpid {
namespace broker {
- AsyncStorePlus::storeConfigDataReturn_t
- AsyncStorePlus::storeConfigData(const boost::intrusive_ptr<StoredData> configData,
- const successCbFn_t successCb,
- const failCbFn_t failCb,
- const void* cbCtxt)
- {
- boost::intrusive_ptr<ConfigToken> configTok(nextConfigToken());
- AsyncStoreOp op(AsyncStoreOp::OP_CONFIG_CREATE, configData, configTok, 0, 0, successCb, failCb, cbCtxt);
- return AsyncStorePlus::storeConfigDataReturn_t(submit(op), configTok);
- }
-
- int
- AsyncStorePlus::destroyConfigData(const boost::intrusive_ptr<ConfigToken> configTok,
- const successCbFn_t successCb,
- const failCbFn_t failCb,
- const void* cbCtxt)
- {
- AsyncStoreOp op(AsyncStoreOp::OP_CONFIG_DESTROY, 0, configTok, 0, 0, successCb, failCb, cbCtxt);
- return submit(op);
- }
-
- AsyncStorePlus::createQueueReturn_t
- AsyncStorePlus::createQueue(const std::string& name,
- const qpid::types::Variant::Map& options,
- const boost::intrusive_ptr<StoredData> queueData,
- const successCbFn_t successCb,
- const failCbFn_t failCb,
- const void* cbCtxt)
- {
- boost::intrusive_ptr<QueueToken> queueTok(nextQueueToken(name, options));
- AsyncStoreOp op(AsyncStoreOp::OP_CONFIG_CREATE, queueData, queueTok, 0, 0, successCb, failCb, cbCtxt);
- return AsyncStorePlus::createQueueReturn_t(submit(op), queueTok);
- }
-
- int
- AsyncStorePlus::destroyQueue(const boost::intrusive_ptr<QueueToken> queueTok,
- const successCbFn_t successCb,
- const failCbFn_t failCb,
- const void* cbCtxt)
- {
- AsyncStoreOp op(AsyncStoreOp::OP_CONFIG_DESTROY, 0, queueTok, 0, 0, successCb, failCb, cbCtxt);
- return submit(op);
- }
-
- AsyncStorePlus::txnReturn_t
- AsyncStorePlus::beginTxn(const std::string xid,
- const successCbFn_t successCb,
- const failCbFn_t failCb,
- const void* cbCtxt)
- {
- boost::intrusive_ptr<TxnToken> txnTok(nextTxnToken(xid));
- AsyncStoreOp op(AsyncStoreOp::OP_TXN_BEGIN, 0, 0, 0, txnTok, successCb, failCb, cbCtxt);
- return AsyncStorePlus::txnReturn_t(submit(op), txnTok);
- }
-
- int
- AsyncStorePlus::prepareTxn(const boost::intrusive_ptr<TxnToken> txnTok,
- const successCbFn_t successCb,
- const failCbFn_t failCb,
- const void* cbCtxt)
- {
- AsyncStoreOp op(AsyncStoreOp::OP_TXN_PREPARE, 0, 0, 0, txnTok, successCb, failCb, cbCtxt);
- return submit(op);
- }
-
- int
- AsyncStorePlus::commitTxn(const boost::intrusive_ptr<TxnToken> txnTok,
- const successCbFn_t successCb,
- const failCbFn_t failCb,
- const void* cbCtxt)
- {
- AsyncStoreOp op(AsyncStoreOp::OP_TXN_COMMIT, 0, 0, 0, txnTok, successCb, failCb, cbCtxt);
- return submit(op);
- }
-
- int
- AsyncStorePlus::abortTxn(const boost::intrusive_ptr<TxnToken> txnTok,
- const successCbFn_t successCb,
- const failCbFn_t failCb,
- const void* cbCtxt)
- {
- AsyncStoreOp op(AsyncStoreOp::OP_TXN_ABORT, 0, 0, 0, txnTok, successCb, failCb, cbCtxt);
- return submit(op);
- }
-
- AsyncStorePlus::enqReturn_t
- AsyncStorePlus::enqueueMsg(const boost::intrusive_ptr<StoredData> msgData,
- const boost::intrusive_ptr<QueueToken> queueTok,
- const boost::intrusive_ptr<TxnToken> txnTok,
- const successCbFn_t successCb,
- const failCbFn_t failCb,
- const void* cbCtxt)
- {
- boost::intrusive_ptr<MessageToken> msgTok(nextMessageToken());
- AsyncStoreOp op(AsyncStoreOp::OP_ENQUEUE, msgData, msgTok, queueTok, txnTok, successCb, failCb, cbCtxt);
- return AsyncStorePlus::enqReturn_t(submit(op), msgTok);
- }
-
- int
- AsyncStorePlus::dequeueMsg(const boost::intrusive_ptr<MessageToken> msgTok,
- const boost::intrusive_ptr<QueueToken> queueTok,
- const boost::intrusive_ptr<TxnToken> txnTok,
- const successCbFn_t successCb,
- const failCbFn_t failCb,
- const void* cbCtxt)
- {
- AsyncStoreOp op(AsyncStoreOp::OP_DEQUEUE, 0, msgTok, queueTok, txnTok, successCb, failCb, cbCtxt);
- return submit(op);
- }
-
- AsyncStorePlus::storeEventReturn_t
- AsyncStorePlus::storeQueueEvent(const boost::intrusive_ptr<StoredData> eventData,
- const boost::intrusive_ptr<QueueToken> queueTok,
- const boost::intrusive_ptr<TxnToken> txnTok,
- const successCbFn_t successCb,
- const failCbFn_t failCb,
- const void* cbCtxt)
- {
- boost::intrusive_ptr<EventToken> eventTok(nextEventToken());
- AsyncStoreOp op(AsyncStoreOp::OP_EVENT_STORE, eventData, eventTok, queueTok, txnTok, successCb, failCb, cbCtxt);
- return AsyncStorePlus::storeEventReturn_t(submit(op), eventTok);
- }
-
- int
- AsyncStorePlus::flushQueue(const boost::intrusive_ptr<QueueToken> queueTok,
- const successCbFn_t successCb,
- const failCbFn_t failCb,
- const void* cbCtxt)
- {
- AsyncStoreOp op(AsyncStoreOp::OP_FLUSH, 0, 0, queueTok, 0, successCb, failCb, cbCtxt);
- return submit(op);
- }
+DataSource::~DataSource()
+{}
+
+AsyncStore::AsyncStore()
+{}
+
+AsyncStore::~AsyncStore()
+{}
+
+AsyncResult::AsyncResult() :
+ errNo(0),
+ errMsg()
+{}
+
+AsyncResult::AsyncResult(const int errNo,
+ const std::string& errMsg) :
+ errNo(errNo),
+ errMsg(errMsg)
+{}
+
+void
+AsyncResult::destroy()
+{
+ delete this;
+}
}} // namespace qpid::broker
diff --git a/cpp/src/qpid/broker/AsyncStore.h b/cpp/src/qpid/broker/AsyncStore.h
index 74323607ab..af9b7be601 100644
--- a/cpp/src/qpid/broker/AsyncStore.h
+++ b/cpp/src/qpid/broker/AsyncStore.h
@@ -20,219 +20,91 @@
#ifndef qpid_broker_AsyncStore_h_
#define qpid_broker_AsyncStore_h_
-#include "AsyncStoreErrors.h"
-#include "AsyncStoreToken.h"
-#include "qpid/broker/RecoveryManager.h"
-#include "qpid/RefCounted.h"
-#include "qpid/types/Variant.h"
-#include <string>
+// TODO: See if we can replace this with a forward declaration, but current definition of qpid::types::Variant::Map
+// does not allow it. Using a local map<std::string, Variant> definition also precludes forward declaration.
+#include "qpid/types/Variant.h" // qpid::types::Variant::Map
-#include <boost/intrusive_ptr.hpp>
+#include <stdint.h>
+#include <string>
namespace qpid {
+
namespace broker {
- // C functor-style definitions for async completion and failure callbacks
- /**
- * \brief Callback function used for successful completion of operation.
- *
- * \param ctxPtr Callback context pointer
- */
- typedef void (*successCbFn_t)(const void * ctxtPtr);
-
- /**
- * \brief Callback function used when an operation fails.
- *
- * \param errCode Erroro code which indicates the error or failure
- * \param errInfo Additional information about this specific error or failure in text format
- * \param ctxtPtr Callback context pointer
- */
- typedef void (*failCbFn_t)(const asyncStoreError_t errCode, const std::string& errInfo, const void* ctxtPtr);
-
- /**
- * \brief Struct used to pass operation code and parameters to AsyncStore::submit().
- */
- struct AsyncStoreOp // Ops require the following tokens: (o=optional):
- { // data id queue txn successCb failCb cbCtxt
- typedef enum { // -----------------------------------------------
- OP_NONE = 0, //
- OP_CONFIG_CREATE, // Y Y N N o o o
- OP_CONFIG_DESTROY, // N Y N N o o o
- OP_FLUSH, // N N Y N o o o
- OP_TXN_BEGIN, // N N N Y o o o
- OP_TXN_PREPARE, // N N N Y o o o
- OP_TXN_ABORT, // N N N Y o o o
- OP_TXN_COMMIT, // N N N Y o o o
- OP_EVENT_STORE, // Y Y Y o o o o
- OP_ENQUEUE, // Y Y Y o o o o
- OP_DEQUEUE // N Y Y o o o o
- } opCode_t;
-
- opCode_t op; ///< Operation code
- boost::intrusive_ptr<StoredData> data; ///< Data source for ops where data is persisted
- boost::intrusive_ptr<IdentityToken> id; ///< Token for target of persistence operation
- boost::intrusive_ptr<QueueToken> queue; ///< Token for queue where a queue context is required
- boost::intrusive_ptr<TxnToken> txn; ///< Token for transaction context if required
- successCbFn_t successCb; ///< Successful completion callback function
- failCbFn_t failCb; ///< Failure callback function
- const void* cbCtxt; ///< Callback context passed back in callback functions
-
- // --- Convenience constructors ---
-
- AsyncStoreOp() : op(OP_NONE), data(0), id(0), queue(0), txn(0), successCb(0), failCb(0), cbCtxt(0) {}
-
- AsyncStoreOp(const opCode_t op,
- const boost::intrusive_ptr<StoredData> data,
- const boost::intrusive_ptr<IdentityToken> id,
- const boost::intrusive_ptr<QueueToken> queue,
- const boost::intrusive_ptr<TxnToken> txn,
- const successCbFn_t successCb = 0,
- const failCbFn_t failCb = 0,
- const void* cbCtxt = 0) :
- op(op), data(data), id(id), queue(queue), txn(txn), successCb(successCb), failCb(failCb), cbCtxt(cbCtxt)
- {}
-
- }; // struct StoreOp
-
-
- /**
- * \brief This is the core async store interface class.
- */
- class AsyncStore: public Recoverable
- {
- public:
- // Submit async operation here
- virtual int submit(const AsyncStoreOp& op) = 0;
-
- // Functions to provide tokens for an operation
- virtual boost::intrusive_ptr<ConfigToken> nextConfigToken() = 0;
- virtual boost::intrusive_ptr<EventToken> nextEventToken() = 0;
- virtual boost::intrusive_ptr<MessageToken> nextMessageToken() = 0;
- virtual boost::intrusive_ptr<QueueToken> nextQueueToken(const std::string& name, const qpid::types::Variant::Map& options) = 0;
- virtual boost::intrusive_ptr<TxnToken> nextTxnToken(const std::string& xid=std::string()) = 0;
-
- // Legacy - Restore FTD message, is NOT async!
- virtual int loadContent(boost::intrusive_ptr<MessageToken> msgTok,
- const boost::intrusive_ptr<QueueToken> queueTok,
- char* data,
- uint64_t offset,
- uint64_t length) = 0;
- }; // class AsyncStore
-
-
- /**
- * \brief This class contains helper functions that set up AsyncStoreOp and pass it to the submit() function.
- *
- * In some cases, a token instance is returned along with the return code of the submit;
- * a std::pair<int, tok> pattern is used for these calls.
- *
- * I don't want to call this a xxxImpl class, as it is still abstract and needs to be subclassed. Other ideas for
- * a class name here welcome!
- *
- * Usage pattern example:
- * ----------------------
- * queueTok <- createQueue(queueName, storeOpts, queueOpts); // Queue is persisted, store space initialized
- *
- * dtxTok -< beginTxn(xid); // Xid is supplied: distributed txn
- * msgTok <- enqueueMsg(msgData, queueTok, dtxTok); // Transactional enqueue of msgData on queue queueTok
- * prepareTxn(dtxTok); // dtx prepare
- * commitTxn(dtxTok); // end of distributed txn
- *
- * txnTok <- beginTxn(); // local txn
- * dequeue(msgTok, queueTok, txnTok); // Transactional dequeue of message msgTok on queue queueTok
- * commitTxn(txnTok); // end of local txn
- *
- * destroyQueue(queueTok);
- */
- class AsyncStorePlus : public AsyncStore
- {
- // --- Config data ---
-
- typedef std::pair<int, boost::intrusive_ptr<ConfigToken> > storeConfigDataReturn_t;
- storeConfigDataReturn_t storeConfigData(const boost::intrusive_ptr<StoredData> configData,
- const successCbFn_t successCb = 0,
- const failCbFn_t failCb = 0,
- const void* cbCtxt = 0);
-
- int destroyConfigData(const boost::intrusive_ptr<ConfigToken> configTok,
- const successCbFn_t successCb = 0,
- const failCbFn_t failCb = 0,
- const void* cbCtxt = 0);
-
-
- // --- Queues ---
-
- typedef std::pair<int, boost::intrusive_ptr<QueueToken> > createQueueReturn_t;
- createQueueReturn_t createQueue(const std::string& name,
- const qpid::types::Variant::Map& options,
- const boost::intrusive_ptr<StoredData> queueData,
- const successCbFn_t successCb = 0,
- const failCbFn_t failCb = 0,
- const void* cbCtxt = 0);
-
- int flushQueue(const boost::intrusive_ptr<QueueToken> queueTok,
- const successCbFn_t successCb = 0,
- const failCbFn_t failCb = 0,
- const void* cbCtxt = 0);
-
- int destroyQueue(const boost::intrusive_ptr<QueueToken> queueTok,
- const successCbFn_t successCb = 0,
- const failCbFn_t failCb = 0,
- const void* cbCtxt = 0);
-
-
- // --- Transactions ---
-
- typedef std::pair<int, boost::intrusive_ptr<TxnToken> > txnReturn_t;
- txnReturn_t beginTxn(const std::string xid = std::string(),
- const successCbFn_t successCb = 0,
- const failCbFn_t failCb = 0,
- const void* cbCtxt = 0);
-
- int prepareTxn(const boost::intrusive_ptr<TxnToken> txnTok,
- const successCbFn_t successCb = 0,
- const failCbFn_t failCb = 0,
- const void* cbCtxt = 0);
-
- int commitTxn(const boost::intrusive_ptr<TxnToken> txnTok,
- const successCbFn_t successCb = 0,
- const failCbFn_t failCb = 0,
- const void* cbCtxt = 0);
-
- int abortTxn(const boost::intrusive_ptr<TxnToken> txnTok,
- const successCbFn_t successCb = 0,
- const failCbFn_t failCb = 0,
- const void* cbCtxt = 0);
-
-
- // --- Event storage ---
-
- typedef std::pair<int, boost::intrusive_ptr<EventToken> > storeEventReturn_t;
- storeEventReturn_t storeQueueEvent(const boost::intrusive_ptr<StoredData> eventData,
- const boost::intrusive_ptr<QueueToken> queueTok,
- const boost::intrusive_ptr<TxnToken> txnTok = 0,
- const successCbFn_t successCb = 0,
- const failCbFn_t failCb = 0,
- const void* cbCtxt = 0);
-
-
- // --- Messages ---
-
- typedef std::pair<int, boost::intrusive_ptr<MessageToken> > enqReturn_t;
- enqReturn_t enqueueMsg(const boost::intrusive_ptr<StoredData> msgData,
- const boost::intrusive_ptr<QueueToken> queueTok,
- const boost::intrusive_ptr<TxnToken> txnTok = 0,
- const successCbFn_t successCb = 0,
- const failCbFn_t failCb = 0,
- const void* cbCtxt = 0);
-
- int dequeueMsg(const boost::intrusive_ptr<MessageToken> msgTok,
- const boost::intrusive_ptr<QueueToken> queueTok,
- const boost::intrusive_ptr<TxnToken> txnTok = 0,
- const successCbFn_t successCb = 0,
- const failCbFn_t failCb = 0,
- const void* cbCtxt = 0);
- }; // class AsyncStorePlus
+// Defined by broker, implements qpid::messaging::Handle-type template to hide ref counting:
+class BrokerContext;
+
+// Subclassed by broker:
+class DataSource {
+public:
+ virtual ~DataSource();
+ virtual uint64_t getSize() = 0;
+ virtual void write(char* target) = 0;
+};
+
+// Defined by store, all implement qpid::messaging::Handle-type template to hide ref counting:
+class ConfigHandle;
+class QueueHandle;
+class TxnHandle;
+class EventHandle;
+class MessageHandle;
+class EnqueueHandle;
+
+// Callback definition:
+struct AsyncResult
+{
+ int errNo; // 0 implies no error
+ std::string errMsg;
+ AsyncResult();
+ AsyncResult(const int errNo,
+ const std::string& errMsg);
+ void destroy();
+};
+typedef void (*ResultCallback)(const AsyncResult*, BrokerContext*);
+
+// Subclassed by store:
+class AsyncStore {
+public:
+ AsyncStore();
+ virtual ~AsyncStore();
+
+ // Factory methods for creating handles
+
+ virtual TxnHandle createTxnHandle(const std::string& xid=std::string()) = 0;
+ virtual ConfigHandle createConfigHandle() = 0;
+ virtual QueueHandle createQueueHandle(const std::string& name, const qpid::types::Variant::Map& opts) = 0;
+ virtual EventHandle createEventHandle(QueueHandle&, const std::string& key=std::string()) = 0;
+ virtual MessageHandle createMessageHandle(const DataSource*) = 0;
+ virtual EnqueueHandle createEnqueueHandle(MessageHandle&, QueueHandle&) = 0;
+
+
+ // Store async interface
+
+ virtual void submitPrepare(TxnHandle&, ResultCallback, BrokerContext*) = 0; // Distributed txns only
+ virtual void submitCommit(TxnHandle&, ResultCallback, BrokerContext*) = 0;
+ virtual void submitAbort(TxnHandle&, ResultCallback, BrokerContext*) = 0;
+
+ virtual void submitCreate(ConfigHandle&, const DataSource*, ResultCallback, BrokerContext*) = 0;
+ virtual void submitDestroy(ConfigHandle&, ResultCallback, BrokerContext*) = 0;
+
+ virtual void submitCreate(QueueHandle&, const DataSource*, ResultCallback, BrokerContext*) = 0;
+ virtual void submitDestroy(QueueHandle&, ResultCallback, BrokerContext*) = 0;
+ virtual void submitFlush(QueueHandle&, ResultCallback, BrokerContext*) = 0;
+
+ virtual void submitCreate(EventHandle&, const DataSource*, ResultCallback, BrokerContext*) = 0;
+ virtual void submitCreate(EventHandle&, const DataSource*, TxnHandle&, ResultCallback, BrokerContext*) = 0;
+ virtual void submitDestroy(EventHandle&, ResultCallback, BrokerContext*) = 0;
+ virtual void submitDestroy(EventHandle&, TxnHandle&, ResultCallback, BrokerContext*) = 0;
+
+ virtual void submitEnqueue(EnqueueHandle&, ResultCallback, BrokerContext*) = 0;
+ virtual void submitEnqueue(EnqueueHandle&, TxnHandle&, ResultCallback, BrokerContext*) = 0;
+ virtual void submitDequeue(EnqueueHandle&, ResultCallback, BrokerContext*) = 0;
+ virtual void submitDequeue(EnqueueHandle&, TxnHandle&, ResultCallback, BrokerContext*) = 0;
+
+ // Legacy - Restore FTD message, is NOT async!
+ virtual int loadContent(MessageHandle&, QueueHandle&, char* data, uint64_t offset, const uint64_t length) = 0;
+};
+
}} // namespace qpid::broker
diff --git a/cpp/src/qpid/broker/AsyncStoreErrors.h b/cpp/src/qpid/broker/AsyncStoreErrors.h
deleted file mode 100644
index 748049305c..0000000000
--- a/cpp/src/qpid/broker/AsyncStoreErrors.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * 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
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-#ifndef qpid_broker_AsyncStoreErrors_h_
-#define qpid_broker_AsyncStoreErrors_h_
-
-#include <stdint.h> // uint16_t, uint32_t
-
-namespace qpid {
-namespace broker {
-
- // Error codes returned by AsyncStore::submit()
- static const int ERR_OK = 0; ///< Successful submission
- static const int ERR_PARAMS = -1; ///< Incorrect or bad parameters in struct AsyncStoreOp
- static const int ERR_FULL = -2; ///< Event queue full
-
- /**
- * This system allows 32-bit error codes to be expressed as either a struct of two
- * uint16_t value or a single uint32_t value.
- *
- * The idea of having two values is that the interface can possibly specify error classes
- * or types (possibly indicating severity too), while allowing the implementation to specify
- * an additional code or "sub-code" specific to that implementation.
- *
- * \todo: Finalize structure (another option: uint8_t class; uint8_t op; uint16_t errCode;)
- * and the interface-level error codes.
- */
-#pragma pack(1)
- typedef struct {
- uint16_t errClass;
- uint16_t errorCode;
- } asyncStoreErrorStruct_t;
-#pragma pack()
-
- typedef union {
- asyncStoreErrorStruct_t s;
- uint32_t i;
- } asyncStoreError_t;
-
-}} // namespace qpid::broker
-
-
-#endif // qpid_broker_AsyncStoreErrors_h_
diff --git a/cpp/src/qpid/broker/AsyncStoreToken.h b/cpp/src/qpid/broker/AsyncStoreToken.h
deleted file mode 100644
index 14659c56e6..0000000000
--- a/cpp/src/qpid/broker/AsyncStoreToken.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * 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
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-#ifndef qpid_broker_AsyncStoreToken_h_
-#define qpid_broker_AsyncStoreToken_h_
-
-#include "qpid/RefCounted.h"
-#include <stdint.h> // uint64_t
-
-namespace qpid {
-namespace broker {
-
-/**
- * Pointer to data to be persisted.
- */
-class StoredData : public qpid::RefCounted
-{
-public:
- virtual ~StoredData() {}
- virtual uint64_t getSize() = 0;
- virtual void write(char*) = 0;
-};
-
-/**
- * Token classes, to be implemented by store:
- * <pre>
- *
- * +---------------+
- * | IdentityToken |
- * +---------------+
- * ^
- * |
- * +---------------+--------------+
- * | | |
- * +------------+ +-------------+ +----------+
- * | EventToken | | ConfigToken | | TxnToken |
- * +------------+ +-------------+ +----------+
- * ^ ^
- * | |
- * +--------------+ +------------+
- * | MessageToken | | QueueToken |
- * +--------------+ +------------+
- *
- * </pre>
- */
-
-class IdentityToken : public qpid::RefCounted
-{
-public :
- virtual ~IdentityToken() {}
-};
-
-class EventToken : public IdentityToken
-{
-public :
- virtual ~EventToken() {}
-};
-
-class MessageToken : public EventToken
-{
-public :
- virtual ~MessageToken() {}
-};
-
-class ConfigToken : public IdentityToken
-{
-public :
- virtual ~ConfigToken() {}
-};
-
-class QueueToken : public ConfigToken
-{
-public :
- virtual ~QueueToken() {}
-};
-
-class TxnToken : public IdentityToken
-{
-public :
- virtual ~TxnToken() {}
-};
-
-}} // namespace qpid::broker
-
-#endif // qpid_broker_AsyncStoreToken_h_
diff --git a/cpp/src/qpid/broker/Broker.cpp b/cpp/src/qpid/broker/Broker.cpp
index 221c31583b..0fd31580f6 100644
--- a/cpp/src/qpid/broker/Broker.cpp
+++ b/cpp/src/qpid/broker/Broker.cpp
@@ -377,6 +377,11 @@ void Broker::setStore (boost::shared_ptr<MessageStore>& _store)
setStore();
}
+void Broker::setAsyncStore(boost::shared_ptr<AsyncStore>& /*asyncStore*/)
+{
+ // TODO: Provide implementation for async store interface
+}
+
void Broker::setStore () {
queues.setStore (store.get());
dtxManager.setStore (store.get());
diff --git a/cpp/src/qpid/broker/Broker.h b/cpp/src/qpid/broker/Broker.h
index b6eab894f3..cff38eecdd 100644
--- a/cpp/src/qpid/broker/Broker.h
+++ b/cpp/src/qpid/broker/Broker.h
@@ -22,6 +22,7 @@
*
*/
+#include "qpid/broker/AsyncStore.h"
#include "qpid/broker/BrokerImportExport.h"
#include "qpid/broker/ConnectionFactory.h"
#include "qpid/broker/ConnectionToken.h"
@@ -229,6 +230,7 @@ public:
virtual void shutdown();
QPID_BROKER_EXTERN void setStore (boost::shared_ptr<MessageStore>& store);
+ void setAsyncStore(boost::shared_ptr<AsyncStore>& asyncStore);
MessageStore& getStore() { return *store; }
void setAcl (AclModule* _acl) {acl = _acl;}
AclModule* getAcl() { return acl; }
diff --git a/cpp/src/qpid/broker/BrokerContext.h b/cpp/src/qpid/broker/BrokerContext.h
new file mode 100644
index 0000000000..53fe367ab4
--- /dev/null
+++ b/cpp/src/qpid/broker/BrokerContext.h
@@ -0,0 +1,15 @@
+#ifndef qpid_broker_BrokerContext_hpp_
+#define qpid_broker_BrokerContext_hpp_
+
+namespace qpid {
+namespace broker {
+
+class BrokerContext
+{
+public:
+ virtual ~BrokerContext() {}
+};
+
+}} // namespace qpid::broker
+
+#endif // qpid_broker_BrokerContext_hpp_
diff --git a/cpp/src/qpid/broker/QueueEvents.h b/cpp/src/qpid/broker/QueueEvents.h
index fcddfe9092..d0a267e6e2 100644
--- a/cpp/src/qpid/broker/QueueEvents.h
+++ b/cpp/src/qpid/broker/QueueEvents.h
@@ -35,7 +35,7 @@ namespace broker {
/**
* Event manager for queue events. Allows queues to indicate when
- * events have occured; allows listeners to register for notification
+ * events have occurred; allows listeners to register for notification
* of this. The notification happens asynchronously, in a separate
* thread.
*/
diff --git a/cpp/src/qpid/messaging/PrivateImplRef.h b/cpp/src/qpid/messaging/PrivateImplRef.h
index e77c58d071..718faef475 100644
--- a/cpp/src/qpid/messaging/PrivateImplRef.h
+++ b/cpp/src/qpid/messaging/PrivateImplRef.h
@@ -38,7 +38,7 @@ namespace messaging {
*
* === Foo.h
*
- * template <class T> PrivateImplRef;
+ * template <class T> class PrivateImplRef;
* class FooImpl;
*
* Foo : public Handle<FooImpl> {