void Connection::open(const Url& url, const ConnectionSettings& settings) { if (url.empty()) throw Exception(QPID_MSG("Attempt to open URL with no addresses.")); Url::const_iterator i = url.begin(); do { const Address& addr = *i; i++; try { ConnectionSettings cs(settings); if (addr.protocol.size()) 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()); }
void Backup::setBrokerUrl(const Url& brokers) { if (brokers.empty()) return; Mutex::ScopedLock l(lock); if (stopped) return; if (haBroker.getStatus() == JOINING) statusCheck->setUrl(brokers); if (!link) { // Not yet initialized QPID_LOG(info, logPrefix << "Connecting to cluster, broker URL: " << brokers); string protocol = brokers[0].protocol.empty() ? "tcp" : brokers[0].protocol; types::Uuid uuid(true); link = broker.getLinks().declare( broker::QPID_NAME_PREFIX + string("ha.link.") + uuid.str(), brokers[0].host, brokers[0].port, protocol, false, // durable settings.mechanism, settings.username, settings.password, false).first; // no amq.failover - don't want to use client URL. replicator = BrokerReplicator::create(haBroker, link); broker.getExchanges().registerExchange(replicator); } link->setUrl(brokers); }