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/DefaultFileTransferTransporter.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/DefaultFileTransferTransporter.h')
| -rw-r--r-- | Swiften/FileTransfer/DefaultFileTransferTransporter.h | 102 | 
1 files changed, 102 insertions, 0 deletions
| diff --git a/Swiften/FileTransfer/DefaultFileTransferTransporter.h b/Swiften/FileTransfer/DefaultFileTransferTransporter.h new file mode 100644 index 0000000..ef982c0 --- /dev/null +++ b/Swiften/FileTransfer/DefaultFileTransferTransporter.h @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2013 Remko Tronçon + * Licensed under the GNU General Public License. + * See the COPYING file for more information. + */ + +#pragma once + +#include <Swiften/Base/Override.h> +#include <Swiften/Base/API.h> +#include <Swiften/FileTransfer/FileTransferTransporter.h> + +namespace Swift { +	class LocalJingleTransportCandidateGenerator; +	class RemoteJingleTransportCandidateSelector; +	class SOCKS5BytestreamRegistry; +	class SOCKS5BytestreamServerManager; +	class SOCKS5BytestreamProxiesManager; +	class SOCKS5BytestreamClientSession; +	class SOCKS5BytestreamServerSession; +	class IDGenerator; +	class IQRouter; +	class ReadBytestream; +	class WriteBytestream; +	class ConnectionFactory; +	class TimerFactory; +	class CryptoProvider; + +	class SWIFTEN_API DefaultFileTransferTransporter : public FileTransferTransporter { +		public: +			enum Role { +				Initiator, +				Responder +			}; + +			DefaultFileTransferTransporter( +				const JID& initiator,  +				const JID& responder, +				Role role, +				SOCKS5BytestreamRegistry*,  +				SOCKS5BytestreamServerManager* s5bServerManager, +				SOCKS5BytestreamProxiesManager* s5bProxy,  +				IDGenerator* idGenerator,  +				ConnectionFactory*,  +				TimerFactory*,  +				CryptoProvider*, +				IQRouter*); +			virtual ~DefaultFileTransferTransporter(); + +			 +			virtual void initialize(); +			virtual void initialize(const std::string& s5bSessionID); + +			virtual void startGeneratingLocalCandidates() SWIFTEN_OVERRIDE; +			virtual void stopGeneratingLocalCandidates() SWIFTEN_OVERRIDE; + +			virtual void addRemoteCandidates( +					const std::vector<JingleS5BTransportPayload::Candidate>&) SWIFTEN_OVERRIDE; +			virtual void startTryingRemoteCandidates() SWIFTEN_OVERRIDE; +			virtual void stopTryingRemoteCandidates() SWIFTEN_OVERRIDE; + +			virtual void startActivatingProxy(const JID& jid); +			virtual void stopActivatingProxy(); + +			virtual boost::shared_ptr<TransportSession> createIBBSendSession( +					const std::string& sessionID, unsigned int blockSize, boost::shared_ptr<ReadBytestream>) SWIFTEN_OVERRIDE; +			virtual boost::shared_ptr<TransportSession> createIBBReceiveSession( +					const std::string& sessionID, unsigned long long size, boost::shared_ptr<WriteBytestream>) SWIFTEN_OVERRIDE; +			virtual boost::shared_ptr<TransportSession> createRemoteCandidateSession( +					boost::shared_ptr<ReadBytestream>) SWIFTEN_OVERRIDE; +			virtual boost::shared_ptr<TransportSession> createRemoteCandidateSession( +					boost::shared_ptr<WriteBytestream>) SWIFTEN_OVERRIDE; +			virtual boost::shared_ptr<TransportSession> createLocalCandidateSession( +					boost::shared_ptr<ReadBytestream>) SWIFTEN_OVERRIDE; +			virtual boost::shared_ptr<TransportSession> createLocalCandidateSession( +					boost::shared_ptr<WriteBytestream>) SWIFTEN_OVERRIDE; + +		private: +			void handleLocalCandidatesGenerated(const std::vector<JingleS5BTransportPayload::Candidate>&); +			void handleRemoteCandidateSelectFinished( +					const boost::optional<JingleS5BTransportPayload::Candidate>&,  +					boost::shared_ptr<SOCKS5BytestreamClientSession>); +			std::string getSOCKS5DstAddr() const; +			void closeLocalSession(); +			void closeRemoteSession(); +			boost::shared_ptr<SOCKS5BytestreamServerSession> getServerSession(); + +		private: +			JID initiator; +			JID responder; +			Role role; +			SOCKS5BytestreamRegistry* s5bRegistry; +			SOCKS5BytestreamServerManager* s5bServerManager; +			CryptoProvider* crypto; +			IQRouter* router; +			LocalJingleTransportCandidateGenerator* localCandidateGenerator; +			RemoteJingleTransportCandidateSelector* remoteCandidateSelector; +			std::string s5bSessionID; +			boost::shared_ptr<SOCKS5BytestreamClientSession> remoteS5BClientSession; +	}; +} + | 
 Swift
 Swift