/* */ #ifndef _D_REQUEST_SLOT_MAN_H_ #define _D_REQUEST_SLOT_MAN_H_ #include "RequestSlot.h" #include "common.h" #include "PeerMessage.h" #include "Logger.h" #include "PeerConnection.h" #include "PendingMessage.h" #include "TorrentMan.h" #include #define DEFAULT_TIME_OUT 120 typedef deque RequestSlots; class RequestSlotMan { private: int cuid; RequestSlots requestSlots; int timeout; PendingMessages* pendingMessages; PeerConnection* peerConnection; TorrentMan* torrentMan; const Logger* logger; public: RequestSlotMan(int cuid, PendingMessages* pendingMessages, PeerConnection* peerConnection, TorrentMan* torrentMan); ~RequestSlotMan() {} void addRequestSlot(const RequestSlot& requestSlot); void deleteRequestSlot(const RequestSlot& requestSlot); void deleteAllRequestSlot(Piece& piece); void deleteTimeoutRequestSlot(Piece& piece); void deleteCompletedRequestSlot(const Piece& piece); RequestSlot getCorrespoindingRequestSlot(const PeerMessage* pieceMessage) const; bool isEmpty() { return requestSlots.empty(); } int countRequestSlot() const { return requestSlots.size(); } void setTimeout(int timeout) { this->timeout = timeout; } int getTimeout() const { return timeout; } }; #endif // _D_REQUEST_SLOT_MAN_H_