You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2008/06/26 14:25:59 UTC
svn commit: r671877 - in /incubator/qpid/trunk/qpid/cpp/src:
qpid/client/ConnectionImpl.cpp qpid/client/ConnectionImpl.h
tests/ClientSessionTest.cpp
Author: gsim
Date: Thu Jun 26 05:25:58 2008
New Revision: 671877
URL: http://svn.apache.org/viewvc?rev=671877&view=rev
Log:
QPID-1137: don't treat connection as opened if the open never succeeds
Modified:
incubator/qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.cpp
incubator/qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.h
incubator/qpid/trunk/qpid/cpp/src/tests/ClientSessionTest.cpp
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.cpp?rev=671877&r1=671876&r2=671877&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.cpp Thu Jun 26 05:25:58 2008
@@ -40,7 +40,7 @@
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 @@
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()
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.h?rev=671877&r1=671876&r2=671877&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.h Thu Jun 26 05:25:58 2008
@@ -72,7 +72,7 @@
~ConnectionImpl();
void open(const std::string& host, int port);
- bool isOpen() const { return !isClosed && !isClosing; }
+ bool isOpen() const;
void addSession(const boost::shared_ptr<SessionImpl>&);
Modified: incubator/qpid/trunk/qpid/cpp/src/tests/ClientSessionTest.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/ClientSessionTest.cpp?rev=671877&r1=671876&r2=671877&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/ClientSessionTest.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/ClientSessionTest.cpp Thu Jun 26 05:25:58 2008
@@ -246,6 +246,21 @@
BOOST_CHECK_EQUAL("foo1", fix.subs.get("getq").getData());
}
+QPID_AUTO_TEST_CASE(testOpenFailure) {
+ BrokerFixture b;
+ Connection c;
+ string host("unknowable-host");
+ try {
+ c.open(host);
+ } catch (const Exception&) {
+ BOOST_CHECK(!c.isOpen());
+ }
+ b.open(c);
+ BOOST_CHECK(c.isOpen());
+ c.close();
+ BOOST_CHECK(!c.isOpen());
+}
+
QPID_AUTO_TEST_SUITE_END()