diff options
author | Remko Tronçon <git@el-tramo.be> | 2009-12-02 20:42:30 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2009-12-03 08:09:01 (GMT) |
commit | 5608da36a3a319070494d5a70ff984e7c172186e (patch) | |
tree | 2c44df5a9f0ea0ab180763222e54aece5dc65c93 /Swiften/Network/Connector.h | |
parent | 6e50bd41dc3f11815a40dfef500dc0d61ea5d737 (diff) | |
download | swift-contrib-5608da36a3a319070494d5a70ff984e7c172186e.zip swift-contrib-5608da36a3a319070494d5a70ff984e7c172186e.tar.bz2 |
DNS querying is now asynchronous.
This means we can now move them to a separate thread.
Diffstat (limited to 'Swiften/Network/Connector.h')
-rw-r--r-- | Swiften/Network/Connector.h | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/Swiften/Network/Connector.h b/Swiften/Network/Connector.h index 44b4584..cb885ab 100644 --- a/Swiften/Network/Connector.h +++ b/Swiften/Network/Connector.h @@ -4,11 +4,14 @@ #include <boost/signal.hpp> #include <boost/shared_ptr.hpp> +#include "Swiften/Network/DomainNameServiceQuery.h" #include "Swiften/Network/Connection.h" #include "Swiften/Network/HostAddressPort.h" #include "Swiften/Base/String.h" +#include "Swiften/Network/DomainNameResolveError.h" namespace Swift { + class DomainNameAddressQuery; class DomainNameResolver; class ConnectionFactory; @@ -21,14 +24,23 @@ namespace Swift { boost::signal<void (boost::shared_ptr<Connection>)> onConnectFinished; private: + void handleServiceQueryResult(const std::vector<DomainNameServiceQuery::Result>& result); + void handleAddressQueryResult(const HostAddress& address, boost::optional<DomainNameResolveError> error); + void queryAddress(const String& hostname); + void tryNextHostname(); + void tryConnect(const HostAddressPort& target); + void handleConnectionConnectFinished(bool error); private: String hostname; DomainNameResolver* resolver; ConnectionFactory* connectionFactory; - std::deque<HostAddressPort> resolvedHosts; + boost::shared_ptr<DomainNameServiceQuery> serviceQuery; + std::deque<DomainNameServiceQuery::Result> serviceQueryResults; + boost::shared_ptr<DomainNameAddressQuery> addressQuery; + bool queriedAllHosts; boost::shared_ptr<Connection> currentConnection; }; |