summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/messaging/Connection.cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2010-01-28 08:37:37 +0000
committerGordon Sim <gsim@apache.org>2010-01-28 08:37:37 +0000
commite74eaed0bc3665bc38d7cbedce85f85536f92824 (patch)
treef55ff48efa8e2b43c3bf3e0f1d4003b4d7fbe88f /cpp/src/qpid/messaging/Connection.cpp
parenta5318490afdca4c9a16329f2a0e2f9ded0813f36 (diff)
downloadqpid-python-e74eaed0bc3665bc38d7cbedce85f85536f92824.tar.gz
QPID-664: change format of connection options string to match address options; make open() a non-static method.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@904000 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/messaging/Connection.cpp')
-rw-r--r--cpp/src/qpid/messaging/Connection.cpp24
1 files changed, 17 insertions, 7 deletions
diff --git a/cpp/src/qpid/messaging/Connection.cpp b/cpp/src/qpid/messaging/Connection.cpp
index 64ca962317..06006c9d20 100644
--- a/cpp/src/qpid/messaging/Connection.cpp
+++ b/cpp/src/qpid/messaging/Connection.cpp
@@ -19,6 +19,7 @@
*
*/
#include "qpid/messaging/Connection.h"
+#include "qpid/messaging/AddressParser.h"
#include "qpid/messaging/ConnectionImpl.h"
#include "qpid/messaging/Session.h"
#include "qpid/messaging/SessionImpl.h"
@@ -37,18 +38,27 @@ namespace messaging {
using qpid::client::PI;
-Connection Connection::open(const std::string& url, const Variant::Map& options)
-{
- //only support amqp 0-10 at present
- Connection connection(new qpid::client::amqp0_10::ConnectionImpl(url, options));
- return connection;
-}
-
Connection::Connection(ConnectionImpl* impl) { PI::ctor(*this, impl); }
Connection::Connection(const Connection& c) : qpid::client::Handle<ConnectionImpl>() { PI::copy(*this, c); }
Connection& Connection::operator=(const Connection& c) { return PI::assign(*this, c); }
Connection::~Connection() { PI::dtor(*this); }
+Connection::Connection(const std::string& o)
+{
+ Variant::Map options;
+ AddressParser parser(o);
+ if (parser.parseMap(options)) {
+ PI::ctor(*this, new qpid::client::amqp0_10::ConnectionImpl(options));
+ } else {
+ throw InvalidOptionString(o);
+ }
+}
+Connection::Connection(const Variant::Map& options)
+{
+ PI::ctor(*this, new qpid::client::amqp0_10::ConnectionImpl(options));
+}
+
+void Connection::open(const std::string& url) { impl->open(url); }
void Connection::close() { impl->close(); }
Session Connection::newSession(const char* name) { return impl->newSession(false, name); }
Session Connection::newSession(const std::string& name) { return impl->newSession(false, name); }