summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/client
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/client')
-rw-r--r--cpp/src/qpid/client/amqp0_10/ConnectionImpl.cpp21
-rw-r--r--cpp/src/qpid/client/amqp0_10/ConnectionImpl.h7
-rw-r--r--cpp/src/qpid/client/amqp0_10/SessionImpl.cpp2
3 files changed, 18 insertions, 12 deletions
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<std::string> names;
@@ -143,11 +138,21 @@ void ConnectionImpl::close()
for (std::vector<std::string>::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<SessionImpl> getImplPtr(qpid::messaging::Session& session)
{
return boost::dynamic_pointer_cast<SessionImpl>(
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<std::string, qpid::messaging::Session> 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<std::string>::const_iterator i = s.begin(); i != s.end(); ++i) getSender(*i).close();
for (std::vector<std::string>::const_iterator i = r.begin(); i != r.end(); ++i) getReceiver(*i).close();
-
+
connection->closed(*this);
session.close();
}