diff options
author | Kim van der Riet <kpvdr@apache.org> | 2012-05-04 14:16:21 +0000 |
---|---|---|
committer | Kim van der Riet <kpvdr@apache.org> | 2012-05-04 14:16:21 +0000 |
commit | c73f9286ebff93a6c8dbc29cf05e258c4b55c976 (patch) | |
tree | 3ebfcc1863971d19c6f0fcbacaa412a02f644368 /cpp/src | |
parent | 12702f1464b22334acb5e459791f949eb4a9e2d5 (diff) | |
download | qpid-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.txt | 1 | ||||
-rw-r--r-- | cpp/src/Makefile.am | 2 | ||||
-rw-r--r-- | cpp/src/qpid/broker/AsyncStore.cpp | 157 | ||||
-rw-r--r-- | cpp/src/qpid/broker/AsyncStore.h | 288 | ||||
-rw-r--r-- | cpp/src/qpid/broker/AsyncStoreErrors.h | 59 | ||||
-rw-r--r-- | cpp/src/qpid/broker/AsyncStoreToken.h | 101 | ||||
-rw-r--r-- | cpp/src/qpid/broker/Broker.cpp | 5 | ||||
-rw-r--r-- | cpp/src/qpid/broker/Broker.h | 2 | ||||
-rw-r--r-- | cpp/src/qpid/broker/BrokerContext.h | 15 | ||||
-rw-r--r-- | cpp/src/qpid/broker/QueueEvents.h | 2 | ||||
-rw-r--r-- | cpp/src/qpid/messaging/PrivateImplRef.h | 2 |
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> { |