diff options
Diffstat (limited to 'Swiften/LinkLocal/LinkLocalConnector.cpp')
| -rw-r--r-- | Swiften/LinkLocal/LinkLocalConnector.cpp | 49 | 
1 files changed, 25 insertions, 24 deletions
| diff --git a/Swiften/LinkLocal/LinkLocalConnector.cpp b/Swiften/LinkLocal/LinkLocalConnector.cpp index 28107ed..18b5d6a 100644 --- a/Swiften/LinkLocal/LinkLocalConnector.cpp +++ b/Swiften/LinkLocal/LinkLocalConnector.cpp @@ -7,52 +7,53 @@  #include "Swiften/Network/HostAddress.h"  #include "Swiften/Network/HostAddressPort.h"  #include "Swiften/LinkLocal/DNSSD/DNSSDQuerier.h" +#include "Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.h"  namespace Swift {  LinkLocalConnector::LinkLocalConnector(  		const JID& remoteJID,  		const String& hostname, +		int interfaceIndex,  		int port,  		boost::shared_ptr<DNSSDQuerier> querier,  		boost::shared_ptr<Connection> connection) :  -			remoteJID_(remoteJID), -			hostname_(hostname), -			port_(port), -			querier_(querier), -			connection_(connection), -			resolving_(false) { +			remoteJID(remoteJID), +			hostname(hostname), +			interfaceIndex(interfaceIndex), +			port(port), +			querier(querier), +			connection(connection) {  }  void LinkLocalConnector::connect() { -	resolving_ = true; -	//querier_->onHostnameResolved.connect(boost::bind(&LinkLocalConnector::handleHostnameResolved, boost::dynamic_pointer_cast<LinkLocalConnector>(shared_from_this()), _1, _2)); -	//querier_->resolveHostname(hostname_); +	resolveQuery = querier->createResolveHostnameQuery(hostname, interfaceIndex); +	resolveQuery->onHostnameResolved.connect(boost::bind( +			&LinkLocalConnector::handleHostnameResolved,  +			boost::dynamic_pointer_cast<LinkLocalConnector>(shared_from_this()),  +			_1)); +	resolveQuery->run();  } -/* -void LinkLocalConnector::handleHostnameResolved(const String& hostname, const boost::optional<HostAddress>& address) { -	if (resolving_) { -		if (hostname == hostname_) { -			resolving_ = false; -			if (address) { -				connection_->onConnectFinished.connect(boost::bind(boost::ref(onConnectFinished), _1)); -				connection_->connect(HostAddressPort(*address, port_)); -			} -			else { -				onConnectFinished(false); -			} -		} +void LinkLocalConnector::handleHostnameResolved(const boost::optional<HostAddress>& address) { +	if (address) { +		resolveQuery->finish(); +		resolveQuery.reset(); +		connection->onConnectFinished.connect( +				boost::bind(boost::ref(onConnectFinished), _1)); +		connection->connect(HostAddressPort(*address, port)); +	} +	else { +		onConnectFinished(false);  	}  } -*/  void LinkLocalConnector::handleConnected(bool error) {  	onConnectFinished(error);  }  void LinkLocalConnector::queueElement(boost::shared_ptr<Element> element) { -	queuedElements_.push_back(element); +	queuedElements.push_back(element);  } | 
 Swift
 Swift