/* */ #ifndef _D_BT_MESSAGE_DISPATCHER_H_ #define _D_BT_MESSAGE_DISPATCHER_H_ #include "common.h" #include "Piece.h" #include "BtMessage.h" #include "RequestSlot.h" class BtMessageDispatcher { public: virtual ~BtMessageDispatcher() {} virtual void addMessageToQueue(const BtMessageHandle& btMessage) = 0; virtual void addMessageToQueue(const BtMessages& btMessages) = 0; virtual void sendMessages() = 0; virtual void doCancelSendingPieceAction(uint32_t index, uint32_t begin, uint32_t blockLength) = 0; virtual void doCancelSendingPieceAction(const PieceHandle& piece) = 0; virtual void doAbortOutstandingRequestAction(const PieceHandle& piece) = 0; virtual void doChokedAction() = 0; virtual void doChokingAction() = 0; virtual void checkRequestSlotAndDoNecessaryThing() = 0; virtual bool isSendingInProgress() = 0; virtual uint32_t countMessageInQueue() = 0; virtual uint32_t countOutstandingRequest() = 0; virtual bool isOutstandingRequest(uint32_t index, uint32_t blockIndex) = 0; virtual RequestSlot getOutstandingRequest(uint32_t index, uint32_t begin, uint32_t blockLength) = 0; virtual void removeOutstandingRequest(const RequestSlot& slot) = 0; virtual void addOutstandingRequest(const RequestSlot& slot) = 0; }; typedef SharedHandle BtMessageDispatcherHandle; #endif // _D_BT_MESSAGE_DISPATCHER_H_