diff options
Diffstat (limited to 'Swiften/Network')
-rw-r--r-- | Swiften/Network/BoostConnection.cpp | 15 | ||||
-rw-r--r-- | Swiften/Network/BoostConnection.h | 1 | ||||
-rw-r--r-- | Swiften/Network/Connection.h | 8 |
3 files changed, 14 insertions, 10 deletions
diff --git a/Swiften/Network/BoostConnection.cpp b/Swiften/Network/BoostConnection.cpp index d374221..b064c7a 100644 --- a/Swiften/Network/BoostConnection.cpp +++ b/Swiften/Network/BoostConnection.cpp @@ -51,18 +51,21 @@ void BoostConnection::listen() { void BoostConnection::connect(const String& domain) { DomainNameResolver resolver; try { - HostAddressPort addressPort = resolver.resolve(domain.getUTF8String()); - boost::asio::ip::tcp::endpoint endpoint( - boost::asio::ip::address::from_string(addressPort.getAddress().toString()), addressPort.getPort()); - socket_.async_connect( - endpoint, - boost::bind(&BoostConnection::handleConnectFinished, shared_from_this(), boost::asio::placeholders::error)); + connect(resolver.resolve(domain.getUTF8String())); } catch (const DomainNameResolveException& e) { onDisconnected(DomainNameResolveError); } } +void BoostConnection::connect(const HostAddressPort& addressPort) { + boost::asio::ip::tcp::endpoint endpoint( + boost::asio::ip::address::from_string(addressPort.getAddress().toString()), addressPort.getPort()); + socket_.async_connect( + endpoint, + boost::bind(&BoostConnection::handleConnectFinished, shared_from_this(), boost::asio::placeholders::error)); +} + void BoostConnection::disconnect() { //MainEventLoop::removeEventsFromOwner(shared_from_this()); socket_.close(); diff --git a/Swiften/Network/BoostConnection.h b/Swiften/Network/BoostConnection.h index 76b6588..0ed6874 100644 --- a/Swiften/Network/BoostConnection.h +++ b/Swiften/Network/BoostConnection.h @@ -21,6 +21,7 @@ namespace Swift { virtual void listen(); virtual void connect(const String& domain); + virtual void connect(const HostAddressPort& address); virtual void disconnect(); virtual void write(const ByteArray& data); diff --git a/Swiften/Network/Connection.h b/Swiften/Network/Connection.h index c34c21d..25f9a16 100644 --- a/Swiften/Network/Connection.h +++ b/Swiften/Network/Connection.h @@ -1,5 +1,4 @@ -#ifndef SWIFTEN_CONNECTION_H -#define SWIFTEN_CONNECTION_H +#pragma once #include <boost/signals.hpp> @@ -7,6 +6,8 @@ #include "Swiften/Base/String.h" namespace Swift { + class HostAddressPort; + class Connection { public: enum Error { @@ -20,6 +21,7 @@ namespace Swift { virtual ~Connection() {} virtual void listen() = 0; + virtual void connect(const HostAddressPort& address) = 0; virtual void connect(const String& domain) = 0; virtual void disconnect() = 0; virtual void write(const ByteArray& data) = 0; @@ -30,5 +32,3 @@ namespace Swift { boost::signal<void (const ByteArray&)> onDataRead; }; } - -#endif |