diff options
| author | Kevin Smith <git@kismith.co.uk> | 2012-03-03 11:56:45 (GMT) |
|---|---|---|
| committer | Kevin Smith <git@kismith.co.uk> | 2012-03-04 16:01:01 (GMT) |
| commit | 4b6694377e3a0308009bdf90be0a4e0de463b215 (patch) | |
| tree | 86b860395d040c38774dfa4400979f9687dff8ae /Swiften/Network/Connector.h | |
| parent | fde71bd59b1412ae475c06f2d4100ce088e86af6 (diff) | |
| download | swift-contrib-4b6694377e3a0308009bdf90be0a4e0de463b215.zip swift-contrib-4b6694377e3a0308009bdf90be0a4e0de463b215.tar.bz2 | |
Pass along errors about DNS resolution.
Diffstat (limited to 'Swiften/Network/Connector.h')
| -rw-r--r-- | Swiften/Network/Connector.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/Swiften/Network/Connector.h b/Swiften/Network/Connector.h index 8f2c359..bf0efaf 100644 --- a/Swiften/Network/Connector.h +++ b/Swiften/Network/Connector.h @@ -3,69 +3,70 @@ * Licensed under the GNU General Public License v3. * See Documentation/Licenses/GPLv3.txt for more information. */ #pragma once #include <deque> #include <Swiften/Base/boost_bsignals.h> #include <boost/shared_ptr.hpp> #include <Swiften/Network/DomainNameServiceQuery.h> #include <Swiften/Network/Connection.h> #include <Swiften/Network/Timer.h> #include <Swiften/Network/HostAddressPort.h> #include <string> #include <Swiften/Network/DomainNameResolveError.h> namespace Swift { class DomainNameAddressQuery; class DomainNameResolver; class ConnectionFactory; class TimerFactory; class Connector : public boost::bsignals::trackable, public boost::enable_shared_from_this<Connector> { public: typedef boost::shared_ptr<Connector> ref; static Connector::ref create(const std::string& hostname, DomainNameResolver* resolver, ConnectionFactory* connectionFactory, TimerFactory* timerFactory, int defaultPort = 5222) { return ref(new Connector(hostname, resolver, connectionFactory, timerFactory, defaultPort)); } void setTimeoutMilliseconds(int milliseconds); void start(); void stop(); - boost::signal<void (boost::shared_ptr<Connection>)> onConnectFinished; + boost::signal<void (boost::shared_ptr<Connection>, boost::shared_ptr<Error>)> onConnectFinished; private: Connector(const std::string& hostname, DomainNameResolver*, ConnectionFactory*, TimerFactory*, int defaultPort); void handleServiceQueryResult(const std::vector<DomainNameServiceQuery::Result>& result); void handleAddressQueryResult(const std::vector<HostAddress>& address, boost::optional<DomainNameResolveError> error); void queryAddress(const std::string& hostname); void tryNextServiceOrFallback(); void tryNextAddress(); void tryConnect(const HostAddressPort& target); void handleConnectionConnectFinished(bool error); void finish(boost::shared_ptr<Connection>); void handleTimeout(); private: std::string hostname; DomainNameResolver* resolver; ConnectionFactory* connectionFactory; TimerFactory* timerFactory; int defaultPort; int timeoutMilliseconds; boost::shared_ptr<Timer> timer; boost::shared_ptr<DomainNameServiceQuery> serviceQuery; std::deque<DomainNameServiceQuery::Result> serviceQueryResults; boost::shared_ptr<DomainNameAddressQuery> addressQuery; std::deque<HostAddress> addressQueryResults; bool queriedAllServices; boost::shared_ptr<Connection> currentConnection; + bool foundSomeDNS; }; }; |
Swift