From a6cddcf74022b7475202c49eb030b10b497a05b3 Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Thu, 26 Jun 2008 12:25:58 +0000 Subject: QPID-1137: don't treat connection as opened if the open never succeeds git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@671877 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/client/ConnectionImpl.cpp | 12 ++++++++++-- cpp/src/qpid/client/ConnectionImpl.h | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) (limited to 'cpp/src/qpid/client') diff --git a/cpp/src/qpid/client/ConnectionImpl.cpp b/cpp/src/qpid/client/ConnectionImpl.cpp index 22f10d3620..6dca4dcf21 100644 --- a/cpp/src/qpid/client/ConnectionImpl.cpp +++ b/cpp/src/qpid/client/ConnectionImpl.cpp @@ -40,7 +40,7 @@ ConnectionImpl::ConnectionImpl(framing::ProtocolVersion v, const ConnectionSetti handler(settings, v), connector(v, settings, this), version(v), - isClosed(false), + isClosed(true),//closed until successfully opened isClosing(false) { QPID_LOG(debug, "ConnectionImpl created for " << version); @@ -88,12 +88,20 @@ void ConnectionImpl::incoming(framing::AMQFrame& frame) s->in(frame); } +bool ConnectionImpl::isOpen() const +{ + return !isClosed && !isClosing; +} + + void ConnectionImpl::open(const std::string& host, int port) { QPID_LOG(info, "Connecting to " << host << ":" << port); connector.connect(host, port); connector.init(); - handler.waitForOpen(); + handler.waitForOpen(); + Mutex::ScopedLock l(lock); + isClosed = false; } void ConnectionImpl::idleIn() diff --git a/cpp/src/qpid/client/ConnectionImpl.h b/cpp/src/qpid/client/ConnectionImpl.h index 089e73335d..b02dda5af7 100644 --- a/cpp/src/qpid/client/ConnectionImpl.h +++ b/cpp/src/qpid/client/ConnectionImpl.h @@ -72,7 +72,7 @@ class ConnectionImpl : public Bounds, ~ConnectionImpl(); void open(const std::string& host, int port); - bool isOpen() const { return !isClosed && !isClosing; } + bool isOpen() const; void addSession(const boost::shared_ptr&); -- cgit v1.2.1