diff options
author | Stephen D. Huston <shuston@apache.org> | 2009-10-02 15:47:27 +0000 |
---|---|---|
committer | Stephen D. Huston <shuston@apache.org> | 2009-10-02 15:47:27 +0000 |
commit | 31dbd26d81d3aa7b27616e13c30687f0d012711e (patch) | |
tree | d4c1cba6adcd264bd5fbe96d24c6d4c986981132 /cpp | |
parent | 41dd2087ceaf010f0b1c30b84841b8f532e65ab5 (diff) | |
download | qpid-python-31dbd26d81d3aa7b27616e13c30687f0d012711e.tar.gz |
Applied patches to resolve QPID-2076
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@821066 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/src/qpid/broker/Broker.cpp | 8 | ||||
-rw-r--r-- | cpp/src/qpid/broker/Broker.h | 2 | ||||
-rw-r--r-- | cpp/src/qpid/broker/MessageStoreModule.cpp | 6 | ||||
-rw-r--r-- | cpp/src/qpid/broker/MessageStoreModule.h | 5 | ||||
-rw-r--r-- | cpp/src/tests/AsyncCompletion.cpp | 6 | ||||
-rw-r--r-- | cpp/src/tests/test_store.cpp | 3 |
6 files changed, 18 insertions, 12 deletions
diff --git a/cpp/src/qpid/broker/Broker.cpp b/cpp/src/qpid/broker/Broker.cpp index 427226f77e..4259bb2f31 100644 --- a/cpp/src/qpid/broker/Broker.cpp +++ b/cpp/src/qpid/broker/Broker.cpp @@ -210,8 +210,10 @@ Broker::Broker(const Broker::Options& conf) : (*i)->earlyInitialize(*this); // If no plugin store module registered itself, set up the null store. - if (store.get() == 0) - setStore (new NullMessageStore()); + if (store.get() == 0) { + boost::shared_ptr<MessageStore> p(new NullMessageStore()); + setStore (p); + } exchanges.declare(empty, DirectExchange::typeName); // Default exchange. @@ -298,7 +300,7 @@ boost::intrusive_ptr<Broker> Broker::create(const Options& opts) return boost::intrusive_ptr<Broker>(new Broker(opts)); } -void Broker::setStore (MessageStore* _store) +void Broker::setStore (boost::shared_ptr<MessageStore>& _store) { store.reset(new MessageStoreModule (_store)); queues.setStore (store.get()); diff --git a/cpp/src/qpid/broker/Broker.h b/cpp/src/qpid/broker/Broker.h index 87fa45d947..5ca01e0867 100644 --- a/cpp/src/qpid/broker/Broker.h +++ b/cpp/src/qpid/broker/Broker.h @@ -172,7 +172,7 @@ public: /** Shut down the broker */ virtual void shutdown(); - QPID_BROKER_EXTERN void setStore (MessageStore*); + QPID_BROKER_EXTERN void setStore (boost::shared_ptr<MessageStore>& store); MessageStore& getStore() { return *store; } void setAcl (AclModule* _acl) {acl = _acl;} AclModule* getAcl() { return acl; } diff --git a/cpp/src/qpid/broker/MessageStoreModule.cpp b/cpp/src/qpid/broker/MessageStoreModule.cpp index 0b8a5db1c7..5f7cceebd3 100644 --- a/cpp/src/qpid/broker/MessageStoreModule.cpp +++ b/cpp/src/qpid/broker/MessageStoreModule.cpp @@ -32,11 +32,11 @@ using qpid::framing::FieldTable; namespace qpid { namespace broker { -MessageStoreModule::MessageStoreModule(MessageStore* _store) : store(_store) {} +MessageStoreModule::MessageStoreModule(boost::shared_ptr<MessageStore>& _store) + : store(_store) {} MessageStoreModule::~MessageStoreModule() { - delete store; } bool MessageStoreModule::init(const Options*) { return true; } @@ -173,7 +173,7 @@ void MessageStoreModule::collectPreparedXids(std::set<std::string>& xids) bool MessageStoreModule::isNull() const { - return NullMessageStore::isNullStore(store); + return NullMessageStore::isNullStore(store.get()); } }} // namespace qpid::broker diff --git a/cpp/src/qpid/broker/MessageStoreModule.h b/cpp/src/qpid/broker/MessageStoreModule.h index 02cbd13cf1..56b5a3c1ae 100644 --- a/cpp/src/qpid/broker/MessageStoreModule.h +++ b/cpp/src/qpid/broker/MessageStoreModule.h @@ -26,6 +26,7 @@ #include "qpid/broker/RecoveryManager.h" #include <boost/intrusive_ptr.hpp> +#include <boost/shared_ptr.hpp> namespace qpid { namespace broker { @@ -35,9 +36,9 @@ namespace broker { */ class MessageStoreModule : public MessageStore { - MessageStore* store; + boost::shared_ptr<MessageStore> store; public: - MessageStoreModule(MessageStore* store); + MessageStoreModule(boost::shared_ptr<MessageStore>& store); bool init(const Options* options); void truncateInit(const bool pushDownStoreFiles = false); diff --git a/cpp/src/tests/AsyncCompletion.cpp b/cpp/src/tests/AsyncCompletion.cpp index 4492e6b6bc..e32097106f 100644 --- a/cpp/src/tests/AsyncCompletion.cpp +++ b/cpp/src/tests/AsyncCompletion.cpp @@ -70,9 +70,11 @@ class AsyncCompletionMessageStore : public NullMessageStore { QPID_AUTO_TEST_SUITE(AsyncCompletionTestSuite) QPID_AUTO_TEST_CASE(testWaitTillComplete) { - AsyncCompletionMessageStore* store = new AsyncCompletionMessageStore; SessionFixture fix; - fix.broker->setStore(store); // Broker will delete store. + AsyncCompletionMessageStore* store = new AsyncCompletionMessageStore; + boost::shared_ptr<qpid::broker::MessageStore> p; + p.reset(store); + fix.broker->setStore(p); AsyncSession s = fix.session; static const int count = 3; diff --git a/cpp/src/tests/test_store.cpp b/cpp/src/tests/test_store.cpp index 64a96bf71a..f2d3aa65a3 100644 --- a/cpp/src/tests/test_store.cpp +++ b/cpp/src/tests/test_store.cpp @@ -140,7 +140,8 @@ struct TestStorePlugin : public Plugin { { Broker* broker = dynamic_cast<Broker*>(&target); if (!broker) return; - broker->setStore (new TestStore(options.name, *broker)); + boost::shared_ptr<MessageStore> p(new TestStore(options.name, *broker)); + broker->setStore (p); } void initialize(qpid::Plugin::Target&) {} |