diff options
| author | Remko Tronçon <git@el-tramo.be> | 2012-12-25 14:39:48 (GMT) | 
|---|---|---|
| committer | Remko Tronçon <git@el-tramo.be> | 2013-05-11 10:22:56 (GMT) | 
| commit | 927d62cc54c8a5087dba6b61afa9ad30dc528a23 (patch) | |
| tree | e67dc911bd30c0519d31a542d8e085bbb209879d /Swiften/FileTransfer/SOCKS5BytestreamServerManager.h | |
| parent | 17b188343e7208b875af7af30d94f0bf948f6b93 (diff) | |
| download | swift-927d62cc54c8a5087dba6b61afa9ad30dc528a23.zip swift-927d62cc54c8a5087dba6b61afa9ad30dc528a23.tar.bz2 | |
File Transfer refactoring.
Allocate S5B server lazily.
Forward forts lazily.
Various state machine fixes.
Temporarily disabling S5B proxy support.
Change-Id: I3145e85a99b15a7e457306bbfbe9c0eb570191e4
Diffstat (limited to 'Swiften/FileTransfer/SOCKS5BytestreamServerManager.h')
| -rw-r--r-- | Swiften/FileTransfer/SOCKS5BytestreamServerManager.h | 73 | 
1 files changed, 73 insertions, 0 deletions
| diff --git a/Swiften/FileTransfer/SOCKS5BytestreamServerManager.h b/Swiften/FileTransfer/SOCKS5BytestreamServerManager.h new file mode 100644 index 0000000..248a9b9 --- /dev/null +++ b/Swiften/FileTransfer/SOCKS5BytestreamServerManager.h @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2012-2013 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +#include <vector> +#include <boost/shared_ptr.hpp> + +#include <Swiften/Base/boost_bsignals.h> +#include <Swiften/Network/HostAddressPort.h> +#include <Swiften/Network/NATPortMapping.h> + +namespace Swift { +	class NetworkEnvironment; +	class NATTraverser; +	class NATTraversalGetPublicIPRequest; +	class NATTraversalForwardPortRequest; +	class SOCKS5BytestreamRegistry; +	class ConnectionServerFactory; +	class ConnectionServer; +	class SOCKS5BytestreamServerInitializeRequest; +	class SOCKS5BytestreamServer; + +	class SOCKS5BytestreamServerManager { +		public: +			SOCKS5BytestreamServerManager( +					SOCKS5BytestreamRegistry* bytestreamRegistry, +					ConnectionServerFactory* connectionServerFactory,  +					NetworkEnvironment* networkEnvironment, +					NATTraverser* natTraverser); +			~SOCKS5BytestreamServerManager(); + +			boost::shared_ptr<SOCKS5BytestreamServerInitializeRequest> createInitializeRequest(); +			void stop(); +			 +			std::vector<HostAddressPort> getHostAddressPorts() const; +			std::vector<HostAddressPort> getAssistedHostAddressPorts() const; + +			SOCKS5BytestreamServer* getServer() const { +				return server; +			} + +		private: +			bool isInitialized() const; +			void initialize(); +			void checkInitializeFinished(); + +			void handleGetPublicIPResult(boost::optional<HostAddress> address); +			void handleForwardPortResult(boost::optional<NATPortMapping> mapping); + +			boost::signal<void (bool /* success */)> onInitialized; + + +		private: +			friend class SOCKS5BytestreamServerInitializeRequest; +			SOCKS5BytestreamRegistry* bytestreamRegistry; +			ConnectionServerFactory* connectionServerFactory; +			NetworkEnvironment* networkEnvironment; +			NATTraverser* natTraverser; +			enum { Start, Initializing, Initialized } state;  +			SOCKS5BytestreamServer* server; +			boost::shared_ptr<ConnectionServer> connectionServer; +			int connectionServerPort; +			boost::shared_ptr<NATTraversalGetPublicIPRequest> getPublicIPRequest; +			boost::shared_ptr<NATTraversalForwardPortRequest> forwardPortRequest; +			boost::optional<HostAddress> publicAddress; +			boost::optional<NATPortMapping> portMapping; +	}; +} + | 
 Swift
 Swift