/* */ #ifndef D_BT_MESSAGE_DISPATCHER_H #define D_BT_MESSAGE_DISPATCHER_H #include "common.h" #include #include #include "RequestSlot.h" namespace aria2 { class Piece; class BtMessage; class BtMessageDispatcher { public: virtual ~BtMessageDispatcher() = default; virtual void addMessageToQueue(std::unique_ptr btMessage) = 0; virtual void sendMessages() = 0; virtual void doCancelSendingPieceAction(size_t index, int32_t begin, int32_t length) = 0; virtual void doCancelSendingPieceAction(const std::shared_ptr& piece) = 0; virtual void doAbortOutstandingRequestAction(const std::shared_ptr& piece) = 0; virtual void doChokedAction() = 0; virtual void doChokingAction() = 0; virtual void checkRequestSlotAndDoNecessaryThing() = 0; virtual bool isSendingInProgress() = 0; virtual size_t countMessageInQueue() = 0; virtual size_t countOutstandingRequest() = 0; virtual bool isOutstandingRequest(size_t index, size_t blockIndex) = 0; virtual const RequestSlot* getOutstandingRequest(size_t index, int32_t begin, int32_t length) = 0; virtual void removeOutstandingRequest(const RequestSlot* slot) = 0; virtual void addOutstandingRequest(std::unique_ptr slot) = 0; virtual size_t countOutstandingUpload() = 0; }; } // namespace aria2 #endif // D_BT_MESSAGE_DISPATCHER_H