diff options
-rw-r--r-- | cpp/src/qpid/broker/Broker.cpp | 6 | ||||
-rw-r--r-- | cpp/src/qpid/broker/Broker.h | 8 | ||||
-rw-r--r-- | cpp/src/qpid/broker/BrokerSingleton.cpp | 4 | ||||
-rw-r--r-- | cpp/src/qpid/broker/BrokerSingleton.h | 4 | ||||
-rw-r--r-- | cpp/src/qpid/broker/SignalHandler.cpp | 6 | ||||
-rw-r--r-- | cpp/src/qpid/broker/SignalHandler.h | 6 | ||||
-rw-r--r-- | cpp/src/qpidd.cpp | 4 | ||||
-rw-r--r-- | cpp/src/tests/BrokerFixture.h | 2 | ||||
-rw-r--r-- | cpp/src/tests/ForkedBroker.h | 6 |
9 files changed, 24 insertions, 22 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 diff --git a/cpp/src/qpidd.cpp b/cpp/src/qpidd.cpp index 3d4b25e1a8..e79875f964 100644 --- a/cpp/src/qpidd.cpp +++ b/cpp/src/qpidd.cpp @@ -142,7 +142,7 @@ struct QpiddDaemon : public Daemon { /** Code for forked child process */ void child() { - shared_ptr<Broker> brokerPtr(new Broker(options->broker)); + boost::intrusive_ptr<Broker> brokerPtr(new Broker(options->broker)); broker::SignalHandler::setBroker(brokerPtr); uint16_t port=brokerPtr->getPort(); ready(port); // Notify parent. @@ -244,7 +244,7 @@ int main(int argc, char* argv[]) d.fork(); // Broker is stared in QpiddDaemon::child() } else { // Non-daemon broker. - shared_ptr<Broker> brokerPtr(new Broker(options->broker)); + boost::intrusive_ptr<Broker> brokerPtr(new Broker(options->broker)); broker::SignalHandler::setBroker(brokerPtr); if (options->broker.port == 0) cout << uint16_t(brokerPtr->getPort()) << endl; diff --git a/cpp/src/tests/BrokerFixture.h b/cpp/src/tests/BrokerFixture.h index b28dfe9c0c..09cca066ef 100644 --- a/cpp/src/tests/BrokerFixture.h +++ b/cpp/src/tests/BrokerFixture.h @@ -36,7 +36,7 @@ */ struct BrokerFixture : private boost::noncopyable { typedef qpid::broker::Broker Broker; - typedef boost::shared_ptr<Broker> BrokerPtr; + typedef boost::intrusive_ptr<Broker> BrokerPtr; BrokerPtr broker; qpid::sys::Thread brokerThread; diff --git a/cpp/src/tests/ForkedBroker.h b/cpp/src/tests/ForkedBroker.h index 5fb1ce8478..e01034c355 100644 --- a/cpp/src/tests/ForkedBroker.h +++ b/cpp/src/tests/ForkedBroker.h @@ -91,7 +91,7 @@ class ForkedBroker : public qpid::sys::ForkWithMessage { prefix += boost::lexical_cast<std::string>(long(getpid())); qpid::log::Logger::instance().setPrefix(prefix); opts.port = 0; - boost::shared_ptr<qpid::broker::Broker> broker(new qpid::broker::Broker(opts)); + boost::intrusive_ptr<qpid::broker::Broker> broker(new qpid::broker::Broker(opts)); qpid::broker::SignalHandler::setBroker(broker); QPID_LOG(info, "ForkedBroker started on " << broker->getPort()); ready(boost::lexical_cast<std::string>(broker->getPort())); // Notify parent. @@ -99,8 +99,8 @@ class ForkedBroker : public qpid::sys::ForkWithMessage { QPID_LOG(notice, "ForkedBroker exiting."); // Force exit in the child process, otherwise we will try to - // carry with parent tests. - broker.reset(); // Run broker dtor before we exit. + // carry with parent tests. + broker = 0; // Run broker dtor before we exit. exit(0); } |