From a62b3c4f125306ceec23175b9c7aef2786ee786c Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Thu, 8 Apr 2010 09:49:04 +0000 Subject: QPID-664: changed open() to connect(), moved url parameter to constructor, added detach() and isConnected() git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@931852 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp | 21 +++++++++++++-------- cpp/src/qpid/client/amqp0_10/ConnectionImpl.h | 7 ++++--- cpp/src/qpid/client/amqp0_10/SessionImpl.cpp | 2 +- 3 files changed, 18 insertions(+), 12 deletions(-) (limited to 'cpp/src/qpid/client') diff --git a/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp b/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp index 5828449d5e..30b75ff4ff 100644 --- a/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp +++ b/cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp @@ -91,16 +91,17 @@ void convert(const Variant::Map& from, ConnectionSettings& to) setIfFound(from, "max-frame-size", to.maxFrameSize); setIfFound(from, "bounds", to.bounds); - setIfFound(from, "protocol", to.protocol); + setIfFound(from, "transport", to.protocol); } -ConnectionImpl::ConnectionImpl(const Variant::Map& options) : +ConnectionImpl::ConnectionImpl(const std::string& url, const Variant::Map& options) : reconnect(true), timeout(-1), limit(-1), minReconnectInterval(3), maxReconnectInterval(60), retries(0) { QPID_LOG(debug, "Created connection with " << options); setOptions(options); + urls.push_back(url); } void ConnectionImpl::setOptions(const Variant::Map& options) @@ -127,12 +128,6 @@ void ConnectionImpl::setOption(const std::string& name, const Variant& value) QPID_LOG(debug, "Set " << name << " to " << value); } -void ConnectionImpl::open(const std::string& u) -{ - urls.push_back(u); - connect(); -} - void ConnectionImpl::close() { std::vector names; @@ -143,11 +138,21 @@ void ConnectionImpl::close() for (std::vector::const_iterator i = names.begin(); i != names.end(); ++i) { getSession(*i).close(); } + detach(); +} +void ConnectionImpl::detach() +{ qpid::sys::Mutex::ScopedLock l(lock); connection.close(); } +bool ConnectionImpl::isConnected() +{ + qpid::sys::Mutex::ScopedLock l(lock); + return connection.isOpen(); +} + boost::intrusive_ptr getImplPtr(qpid::messaging::Session& session) { return boost::dynamic_pointer_cast( diff --git a/cpp/src/qpid/client/amqp0_10/ConnectionImpl.h b/cpp/src/qpid/client/amqp0_10/ConnectionImpl.h index 2c59d8add8..9d992c1375 100644 --- a/cpp/src/qpid/client/amqp0_10/ConnectionImpl.h +++ b/cpp/src/qpid/client/amqp0_10/ConnectionImpl.h @@ -39,13 +39,14 @@ class SessionImpl; class ConnectionImpl : public qpid::messaging::ConnectionImpl { public: - ConnectionImpl(const qpid::types::Variant::Map& options); - void open(const std::string& url); + ConnectionImpl(const std::string& url, const qpid::types::Variant::Map& options); + void connect(); + bool isConnected(); void close(); qpid::messaging::Session newSession(bool transactional, const std::string& name); qpid::messaging::Session getSession(const std::string& name) const; void closed(SessionImpl&); - void connect(); + void detach(); void setOption(const std::string& name, const qpid::types::Variant& value); private: typedef std::map Sessions; diff --git a/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp b/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp index 8f9751a967..969ad93da9 100644 --- a/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp +++ b/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp @@ -108,7 +108,7 @@ void SessionImpl::close() for (std::vector::const_iterator i = s.begin(); i != s.end(); ++i) getSender(*i).close(); for (std::vector::const_iterator i = r.begin(); i != r.end(); ++i) getReceiver(*i).close(); - + connection->closed(*this); session.close(); } -- cgit v1.2.1