diff options
Diffstat (limited to 'Swiften/FileTransfer/SOCKS5BytestreamProxyFinder.h')
-rw-r--r-- | Swiften/FileTransfer/SOCKS5BytestreamProxyFinder.h | 60 |
1 files changed, 37 insertions, 23 deletions
diff --git a/Swiften/FileTransfer/SOCKS5BytestreamProxyFinder.h b/Swiften/FileTransfer/SOCKS5BytestreamProxyFinder.h index 8265157..893f475 100644 --- a/Swiften/FileTransfer/SOCKS5BytestreamProxyFinder.h +++ b/Swiften/FileTransfer/SOCKS5BytestreamProxyFinder.h @@ -4,12 +4,19 @@ * See Documentation/Licenses/BSD-simplified.txt for more information. */ +/* + * Copyright (c) 2015-2016 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. + */ + + #pragma once -#include <boost/shared_ptr.hpp> +#include <memory> +#include <Swiften/Base/API.h> #include <Swiften/Disco/DiscoServiceWalker.h> -#include <Swiften/Network/HostAddressPort.h> #include <Swiften/Elements/S5BProxyRequest.h> namespace Swift { @@ -17,26 +24,33 @@ namespace Swift { class JID; class IQRouter; -class SOCKS5BytestreamProxyFinder { - public: - SOCKS5BytestreamProxyFinder(const JID& service, IQRouter *iqRouter); - ~SOCKS5BytestreamProxyFinder(); - - void start(); - void stop(); - - boost::signal<void(boost::shared_ptr<S5BProxyRequest>)> onProxyFound; - - private: - void sendBytestreamQuery(const JID&); - - void handleServiceFound(const JID&, boost::shared_ptr<DiscoInfo>); - void handleProxyResponse(boost::shared_ptr<S5BProxyRequest>, ErrorPayload::ref); - private: - JID service; - IQRouter* iqRouter; - boost::shared_ptr<DiscoServiceWalker> serviceWalker; - std::vector<boost::shared_ptr<GenericRequest<S5BProxyRequest> > > requests; - }; +/* + * This class is designed to find possible SOCKS5 bytestream proxies which are used for peer-to-peer data transfers in + * restrictive environments. + */ +class SWIFTEN_API SOCKS5BytestreamProxyFinder { + public: + SOCKS5BytestreamProxyFinder(const JID& service, IQRouter *iqRouter); + ~SOCKS5BytestreamProxyFinder(); + + void start(); + void stop(); + + boost::signals2::signal<void(std::vector<std::shared_ptr<S5BProxyRequest> >)> onProxiesFound; + + private: + void sendBytestreamQuery(const JID&); + + void handleServiceFound(const JID&, std::shared_ptr<DiscoInfo>); + void handleProxyResponse(std::shared_ptr<GenericRequest<S5BProxyRequest> > requester, std::shared_ptr<S5BProxyRequest>, ErrorPayload::ref); + void handleWalkEnded(); + + private: + JID service; + IQRouter* iqRouter; + std::shared_ptr<DiscoServiceWalker> serviceWalker; + std::vector<S5BProxyRequest::ref> proxyHosts; + std::set<std::shared_ptr<GenericRequest<S5BProxyRequest> > > pendingRequests; +}; } |