/* */ #ifndef _D_BT_MESSAGE_DISPATCHER_H_ #define _D_BT_MESSAGE_DISPATCHER_H_ #include "common.h" #include #include "SharedHandle.h" #include "RequestSlot.h" namespace aria2 { class Piece; class BtMessage; class BtMessageDispatcher { public: virtual ~BtMessageDispatcher() {} virtual void addMessageToQueue(const SharedHandle& btMessage) = 0; virtual void addMessageToQueue(const std::vector >& btMessages) =0; virtual void sendMessages() = 0; virtual void doCancelSendingPieceAction(size_t index, uint32_t begin, size_t length) = 0; virtual void doCancelSendingPieceAction(const SharedHandle& piece) = 0; virtual void doAbortOutstandingRequestAction(const SharedHandle& 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 RequestSlot getOutstandingRequest(size_t index, uint32_t begin, size_t length) = 0; virtual void removeOutstandingRequest(const RequestSlot& slot) = 0; virtual void addOutstandingRequest(const RequestSlot& slot) = 0; virtual size_t countOutstandingUpload() = 0; }; typedef SharedHandle BtMessageDispatcherHandle; typedef WeakHandle BtMessageDispatcherWeakHandle; } // namespace aria2 #endif // _D_BT_MESSAGE_DISPATCHER_H_