summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/client
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2010-05-11 14:39:58 +0000
committerAlan Conway <aconway@apache.org>2010-05-11 14:39:58 +0000
commit16da0e0c511c0c1cf4ea592640c522754065200a (patch)
tree59fb80994db731fabe19897c95a6912e68716360 /cpp/src/qpid/client
parentbe8e1bf6b6a0d760bddbbe6642d477a95f36ab42 (diff)
downloadqpid-python-16da0e0c511c0c1cf4ea592640c522754065200a.tar.gz
Support for multiple protocols in qpid::Url.
- simplified qpid::Address to hold (protocol,host,port) triples. - protocol plugins call Url:addProtocol to add tags to Url parser. - use Address::protocol when establishing connections. - ssl_test: tests using URL to connect. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@943130 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/client')
-rw-r--r--cpp/src/qpid/client/Connection.cpp23
-rw-r--r--cpp/src/qpid/client/ConnectionSettings.cpp2
-rw-r--r--cpp/src/qpid/client/Connector.cpp3
-rw-r--r--cpp/src/qpid/client/FailoverManager.cpp11
4 files changed, 19 insertions, 20 deletions
diff --git a/cpp/src/qpid/client/Connection.cpp b/cpp/src/qpid/client/Connection.cpp
index 6d2fd1d760..2882ef5d42 100644
--- a/cpp/src/qpid/client/Connection.cpp
+++ b/cpp/src/qpid/client/Connection.cpp
@@ -71,19 +71,18 @@ void Connection::open(const Url& url, const ConnectionSettings& settings) {
throw Exception(QPID_MSG("Attempt to open URL with no addresses."));
Url::const_iterator i = url.begin();
do {
- const TcpAddress* tcp = i->get<TcpAddress>();
+ const Address& addr = *i;
i++;
- if (tcp) {
- try {
- ConnectionSettings cs(settings);
- cs.host = tcp->host;
- cs.port = tcp->port;
- open(cs);
- break;
- }
- catch (const Exception& /*e*/) {
- if (i == url.end()) throw;
- }
+ try {
+ ConnectionSettings cs(settings);
+ cs.protocol = addr.protocol;
+ cs.host = addr.host;
+ cs.port = addr.port;
+ open(cs);
+ break;
+ }
+ catch (const Exception& /*e*/) {
+ if (i == url.end()) throw;
}
} while (i != url.end());
}
diff --git a/cpp/src/qpid/client/ConnectionSettings.cpp b/cpp/src/qpid/client/ConnectionSettings.cpp
index b0c9477223..60b2eac2e8 100644
--- a/cpp/src/qpid/client/ConnectionSettings.cpp
+++ b/cpp/src/qpid/client/ConnectionSettings.cpp
@@ -31,7 +31,7 @@ namespace client {
ConnectionSettings::ConnectionSettings() :
protocol("tcp"),
host("localhost"),
- port(TcpAddress::DEFAULT_PORT),
+ port(5672),
locale("en_US"),
heartbeat(0),
maxChannels(32767),
diff --git a/cpp/src/qpid/client/Connector.cpp b/cpp/src/qpid/client/Connector.cpp
index a06184fa27..c71dd9ecb6 100644
--- a/cpp/src/qpid/client/Connector.cpp
+++ b/cpp/src/qpid/client/Connector.cpp
@@ -20,7 +20,7 @@
*/
#include "qpid/client/Connector.h"
-
+#include "qpid/Url.h"
#include "qpid/Exception.h"
#include "qpid/log/Statement.h"
#include "qpid/sys/SecurityLayer.h"
@@ -61,6 +61,7 @@ void Connector::registerFactory(const std::string& proto, Factory* connectorFact
QPID_LOG(error, "Tried to register protocol: " << proto << " more than once");
}
theProtocolRegistry()[proto] = connectorFactory;
+ Url::addProtocol(proto);
}
void Connector::activateSecurityLayer(std::auto_ptr<qpid::sys::SecurityLayer>)
diff --git a/cpp/src/qpid/client/FailoverManager.cpp b/cpp/src/qpid/client/FailoverManager.cpp
index 81f71eb7df..9405765b47 100644
--- a/cpp/src/qpid/client/FailoverManager.cpp
+++ b/cpp/src/qpid/client/FailoverManager.cpp
@@ -104,12 +104,11 @@ void FailoverManager::attempt(Connection& c, ConnectionSettings s, std::vector<U
} else {
for (std::vector<Url>::const_iterator i = urls.begin(); i != urls.end() && !c.isOpen(); ++i) {
for (Url::const_iterator j = i->begin(); j != i->end() && !c.isOpen(); ++j) {
- const TcpAddress* tcp = j->get<TcpAddress>();
- if (tcp) {
- s.host = tcp->host;
- s.port = tcp->port;
- attempt(c, s);
- }
+ const Address& addr = *j;
+ s.protocol = addr.protocol;
+ s.host = addr.host;
+ s.port = addr.port;
+ attempt(c, s);
}
}
}