/* * Copyright (c) 2010 Remko Tronçon * Licensed under the GNU General Public License v3. * See Documentation/Licenses/GPLv3.txt for more information. */ #pragma once #include #include "Swiften/FileTransfer/ReadBytestream.h" #include "Swiften/Base/boost_bsignals.h" #include "Swiften/FileTransfer/FileTransferError.h" #include "Swiften/FileTransfer/SOCKS5BytestreamServer.h" #include "Swiften/JID/JID.h" #include "Swiften/Elements/StreamInitiation.h" #include "Swiften/Elements/Bytestreams.h" #include "Swiften/Elements/ErrorPayload.h" #include "Swiften/FileTransfer/IBBSendSession.h" namespace Swift { class IQRouter; class SOCKS5BytestreamServer; class OutgoingFileTransfer { public: OutgoingFileTransfer(const String& id, const JID& from, const JID& to, const String& name, int size, const String& description, boost::shared_ptr bytestream, IQRouter* iqRouter, SOCKS5BytestreamServer* socksServer); void start(); void stop(); boost::signal&)> onFinished; private: void handleStreamInitiationRequestResponse(StreamInitiation::ref, ErrorPayload::ref); void handleBytestreamsRequestResponse(Bytestreams::ref, ErrorPayload::ref); void finish(boost::optional error); void handleIBBSessionFinished(boost::optional error); private: String id; JID from; JID to; String name; int size; String description; boost::shared_ptr bytestream; IQRouter* iqRouter; SOCKS5BytestreamServer* socksServer; boost::shared_ptr ibbSession; }; }