diff options
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