/* * Copyright (c) 2011 Tobias Markmann * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ #pragma once #include #include #include #include #include #include #include #include namespace Swift { class SOCKS5BytestreamProxiesDiscoverRequest; /** * - manages list of working S5B proxies * - creates initial connections (for the candidates you provide) */ class SWIFTEN_API SOCKS5BytestreamProxiesManager { public: SOCKS5BytestreamProxiesManager(ConnectionFactory*, TimerFactory*); boost::shared_ptr createDiscoverProxiesRequest(); void addS5BProxy(S5BProxyRequest::ref); const std::vector& getS5BProxies() const; void connectToProxies(const std::string& sessionID); boost::shared_ptr getProxySessionAndCloseOthers(const JID& proxyJID, const std::string& sessionID); boost::shared_ptr createSOCKS5BytestreamClientSession(HostAddressPort addressPort, const std::string& destAddr); private: ConnectionFactory* connectionFactory; TimerFactory* timerFactory; typedef std::map > ProxyJIDClientSessionMap; std::map proxySessions; std::vector localS5BProxies; }; }