/* * 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 #include "Swiften/Base/boost_bsignals.h" #include "Swiften/FileTransfer/ReadBytestream.h" #include "Swiften/JID/JID.h" #include "Swiften/Elements/IBB.h" #include "Swiften/Elements/ErrorPayload.h" #include "Swiften/FileTransfer/FileTransferError.h" namespace Swift { class IQRouter; class IBBSendSession { public: IBBSendSession(const std::string& id, const JID& to, boost::shared_ptr bytestream, IQRouter* router); ~IBBSendSession(); void start(); void stop(); void setBlockSize(int blockSize) { this->blockSize = blockSize; } boost::signal)> onFinished; private: void handleIBBResponse(IBB::ref, ErrorPayload::ref); void finish(boost::optional); private: std::string id; JID to; boost::shared_ptr bytestream; IQRouter* router; int blockSize; int sequenceNumber; bool active; }; }