/* */ #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, const Logger* logger):cuid(cuid), timeout(DEFAULT_TIME_OUT), pendingMessages(pendingMessages), peerConnection(peerConnection), torrentMan(torrentMan), logger(logger) {} ~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_