summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorStephen D. Huston <shuston@apache.org>2009-10-02 15:47:27 +0000
committerStephen D. Huston <shuston@apache.org>2009-10-02 15:47:27 +0000
commit31dbd26d81d3aa7b27616e13c30687f0d012711e (patch)
treed4c1cba6adcd264bd5fbe96d24c6d4c986981132 /cpp
parent41dd2087ceaf010f0b1c30b84841b8f532e65ab5 (diff)
downloadqpid-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.cpp8
-rw-r--r--cpp/src/qpid/broker/Broker.h2
-rw-r--r--cpp/src/qpid/broker/MessageStoreModule.cpp6
-rw-r--r--cpp/src/qpid/broker/MessageStoreModule.h5
-rw-r--r--cpp/src/tests/AsyncCompletion.cpp6
-rw-r--r--cpp/src/tests/test_store.cpp3
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&) {}