summaryrefslogtreecommitdiff
path: root/cpp/src/qpid
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2008-07-15 14:59:37 +0000
committerAlan Conway <aconway@apache.org>2008-07-15 14:59:37 +0000
commit08ee49c5cbabfaa6906e5bae39ab3677dc207fc4 (patch)
tree20d5a1aa4c207254e53ef22b66fabbb42ac2e36a /cpp/src/qpid
parent64d1a8e63e8a7f82837e8de095e5d23837835e65 (diff)
downloadqpid-python-08ee49c5cbabfaa6906e5bae39ab3677dc207fc4.tar.gz
Switched from shared_ptr to intrusive_ptr and RefCounted for Broker.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@676932 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid')
-rw-r--r--cpp/src/qpid/broker/Broker.cpp6
-rw-r--r--cpp/src/qpid/broker/Broker.h8
-rw-r--r--cpp/src/qpid/broker/BrokerSingleton.cpp4
-rw-r--r--cpp/src/qpid/broker/BrokerSingleton.h4
-rw-r--r--cpp/src/qpid/broker/SignalHandler.cpp6
-rw-r--r--cpp/src/qpid/broker/SignalHandler.h6
6 files changed, 18 insertions, 16 deletions
diff --git a/cpp/src/qpid/broker/Broker.cpp b/cpp/src/qpid/broker/Broker.cpp
index 4971458644..47d9dad537 100644
--- a/cpp/src/qpid/broker/Broker.cpp
+++ b/cpp/src/qpid/broker/Broker.cpp
@@ -240,16 +240,16 @@ void Broker::declareStandardExchange(const std::string& name, const std::string&
}
-shared_ptr<Broker> Broker::create(int16_t port)
+boost::intrusive_ptr<Broker> Broker::create(int16_t port)
{
Options config;
config.port=port;
return create(config);
}
-shared_ptr<Broker> Broker::create(const Options& opts)
+boost::intrusive_ptr<Broker> Broker::create(const Options& opts)
{
- return shared_ptr<Broker>(new Broker(opts));
+ return boost::intrusive_ptr<Broker>(new Broker(opts));
}
void Broker::setStore (MessageStore* _store)
diff --git a/cpp/src/qpid/broker/Broker.h b/cpp/src/qpid/broker/Broker.h
index be59cef24c..a8e5300718 100644
--- a/cpp/src/qpid/broker/Broker.h
+++ b/cpp/src/qpid/broker/Broker.h
@@ -44,7 +44,9 @@
#include "qpid/framing/OutputHandler.h"
#include "qpid/framing/ProtocolInitiation.h"
#include "qpid/sys/Runnable.h"
+#include "qpid/RefCounted.h"
+#include <boost/intrusive_ptr.hpp>
#include <vector>
namespace qpid {
@@ -64,7 +66,7 @@ static const uint16_t DEFAULT_PORT=5672;
* A broker instance.
*/
class Broker : public sys::Runnable, public Plugin::Target,
- public management::Manageable
+ public management::Manageable, public RefCounted
{
public:
@@ -89,8 +91,8 @@ class Broker : public sys::Runnable, public Plugin::Target,
virtual ~Broker();
Broker(const Options& configuration);
- static shared_ptr<Broker> create(const Options& configuration);
- static shared_ptr<Broker> create(int16_t port = DEFAULT_PORT);
+ static boost::intrusive_ptr<Broker> create(const Options& configuration);
+ static boost::intrusive_ptr<Broker> create(int16_t port = DEFAULT_PORT);
/**
* Return listening port. If called before bind this is
diff --git a/cpp/src/qpid/broker/BrokerSingleton.cpp b/cpp/src/qpid/broker/BrokerSingleton.cpp
index 77200dd760..5ba8c9d1e1 100644
--- a/cpp/src/qpid/broker/BrokerSingleton.cpp
+++ b/cpp/src/qpid/broker/BrokerSingleton.cpp
@@ -24,13 +24,13 @@ namespace broker {
BrokerSingleton::BrokerSingleton() {
if (broker.get() == 0)
broker = Broker::create();
- shared_ptr<Broker>::operator=(broker);
+ boost::intrusive_ptr<Broker>::operator=(broker);
}
BrokerSingleton::~BrokerSingleton() {
broker->shutdown();
}
-shared_ptr<Broker> BrokerSingleton::broker;
+boost::intrusive_ptr<Broker> BrokerSingleton::broker;
}} // namespace qpid::broker
diff --git a/cpp/src/qpid/broker/BrokerSingleton.h b/cpp/src/qpid/broker/BrokerSingleton.h
index 14b932df36..22b707506b 100644
--- a/cpp/src/qpid/broker/BrokerSingleton.h
+++ b/cpp/src/qpid/broker/BrokerSingleton.h
@@ -36,13 +36,13 @@ namespace broker {
*
* THREAD UNSAFE.
*/
-class BrokerSingleton : public shared_ptr<Broker>
+class BrokerSingleton : public boost::intrusive_ptr<Broker>
{
public:
BrokerSingleton();
~BrokerSingleton();
private:
- static shared_ptr<Broker> broker;
+ static boost::intrusive_ptr<Broker> broker;
};
}} // namespace qpid::broker
diff --git a/cpp/src/qpid/broker/SignalHandler.cpp b/cpp/src/qpid/broker/SignalHandler.cpp
index c6d7b10218..fee54cfdfc 100644
--- a/cpp/src/qpid/broker/SignalHandler.cpp
+++ b/cpp/src/qpid/broker/SignalHandler.cpp
@@ -25,9 +25,9 @@
namespace qpid {
namespace broker {
-boost::shared_ptr<Broker> SignalHandler::broker;
+boost::intrusive_ptr<Broker> SignalHandler::broker;
-void SignalHandler::setBroker(const boost::shared_ptr<Broker>& b) {
+void SignalHandler::setBroker(const boost::intrusive_ptr<Broker>& b) {
broker = b;
signal(SIGINT,shutdownHandler);
@@ -44,7 +44,7 @@ void SignalHandler::setBroker(const boost::shared_ptr<Broker>& b) {
void SignalHandler::shutdownHandler(int) {
if (broker.get()) {
broker->shutdown();
- broker.reset();
+ broker = 0; // Release the broker reference.
}
}
diff --git a/cpp/src/qpid/broker/SignalHandler.h b/cpp/src/qpid/broker/SignalHandler.h
index 3da7d09756..d2cdfae07c 100644
--- a/cpp/src/qpid/broker/SignalHandler.h
+++ b/cpp/src/qpid/broker/SignalHandler.h
@@ -22,7 +22,7 @@
*
*/
-#include <boost/shared_ptr.hpp>
+#include <boost/intrusive_ptr.hpp>
namespace qpid {
namespace broker {
@@ -36,11 +36,11 @@ class SignalHandler
{
public:
/** Set the broker to be shutdown on signals */
- static void setBroker(const boost::shared_ptr<Broker>& broker);
+ static void setBroker(const boost::intrusive_ptr<Broker>& broker);
private:
static void shutdownHandler(int);
- static boost::shared_ptr<Broker> broker;
+ static boost::intrusive_ptr<Broker> broker;
};
}} // namespace qpid::broker