From 811ef0bba2901e8ff65cd852a7f1d020493b2642 Mon Sep 17 00:00:00 2001 From: Andrew Stitcher Date: Wed, 3 Jun 2009 13:52:51 +0000 Subject: Revert "QPID-1879 Don't use a thread for every new client Connection" This reverts commit b54680d4b3341fa280a237a6d80952b9830ae3c5. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@781378 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/client/ConnectionImpl.cpp | 92 ++-------------------------------- 1 file changed, 4 insertions(+), 88 deletions(-) (limited to 'cpp/src/qpid/client/ConnectionImpl.cpp') diff --git a/cpp/src/qpid/client/ConnectionImpl.cpp b/cpp/src/qpid/client/ConnectionImpl.cpp index ccaa8c0b87..6639f92324 100644 --- a/cpp/src/qpid/client/ConnectionImpl.cpp +++ b/cpp/src/qpid/client/ConnectionImpl.cpp @@ -18,13 +18,7 @@ * under the License. * */ - #include "ConnectionImpl.h" - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - #include "Connector.h" #include "ConnectionSettings.h" #include "SessionImpl.h" @@ -34,16 +28,11 @@ #include "qpid/Url.h" #include "qpid/framing/enum.h" #include "qpid/framing/reply_exceptions.h" -#include "qpid/sys/Poller.h" -#include "qpid/sys/SystemInfo.h" -#include "qpid/Options.h" #include #include -#include #include -#include namespace qpid { namespace client { @@ -53,10 +42,7 @@ using namespace qpid::framing::connection; using namespace qpid::sys; using namespace qpid::framing::connection;//for connection error codes -namespace { -// Maybe should amalgamate the singletons into a single client singleton - -// Get timer singleton +// Get timer singleton Timer& theTimer() { static Mutex timerInitLock; ScopedLock l(timerInitLock); @@ -65,73 +51,6 @@ Timer& theTimer() { return t; } -struct IOThreadOptions : public qpid::Options { - int maxIOThreads; - - IOThreadOptions(int c) : - Options("IO threading options"), - maxIOThreads(c) - { - addOptions() - ("max-iothreads", optValue(maxIOThreads, "N"), "Maximum number of io threads to use"); - } -}; - -// IO threads -class IOThread { - int maxIOThreads; - int ioThreads; - int connections; - Mutex threadLock; - std::vector t; - Poller::shared_ptr poller_; - -public: - void add() { - ScopedLock l(threadLock); - ++connections; - if (ioThreads < maxIOThreads) { - QPID_LOG(debug, "Created IO thread: " << ioThreads); - ++ioThreads; - t.push_back( Thread(poller_.get()) ); - } - } - - void sub() { - ScopedLock l(threadLock); - --connections; - } - - Poller::shared_ptr poller() const { - return poller_; - } - - // Here is where the maximum number of threads is set - IOThread(int c) : - ioThreads(0), - connections(0), - poller_(new Poller) - { - IOThreadOptions options(c); - options.parse(0, 0, QPIDC_CONF_FILE, true); - maxIOThreads = (options.maxIOThreads != -1) ? - options.maxIOThreads : 1; - } - - // We can't destroy threads one-by-one as the only - // control we have is to shutdown the whole lot - // and we can't do that before we're unloaded as we can't - // restart the Poller after shutting it down - ~IOThread() { - poller_->shutdown(); - for (int i=0; iclose(); - io.sub(); } void ConnectionImpl::addSession(const boost::shared_ptr& session, uint16_t channel) @@ -210,6 +126,7 @@ bool ConnectionImpl::isOpen() const return handler.isOpen(); } + void ConnectionImpl::open() { const std::string& protocol = handler.protocol; @@ -217,8 +134,7 @@ void ConnectionImpl::open() int port = handler.port; QPID_LOG(info, "Connecting to " << protocol << ":" << host << ":" << port); - io.add(); - connector.reset(Connector::create(protocol, io.poller(), version, handler, this)); + connector.reset(Connector::create(protocol, version, handler, this)); connector->setInputHandler(&handler); connector->setShutdownHandler(this); connector->connect(host, port); @@ -322,7 +238,7 @@ const ConnectionSettings& ConnectionImpl::getNegotiatedSettings() { return handler; } - + std::vector ConnectionImpl::getKnownBrokers() { return failover ? failover->getKnownBrokers() : handler.knownBrokersUrls; } -- cgit v1.2.1