/* */ #ifndef _D_PEER_ABSTRACT_COMMAND_H_ #define _D_PEER_ABSTRACT_COMMAND_H_ #include "Command.h" #include "Request.h" #include "TorrentDownloadEngine.h" #include class PeerAbstractCommand : public Command { private: void updateCheckPoint(); bool isTimeoutDetected(); struct timeval checkPoint; int timeout; protected: TorrentDownloadEngine* e; Socket* socket; Peer* peer; void setTimeout(int timeout) { this->timeout = timeout; } virtual bool prepareForNextPeer(int wait); virtual bool prepareForRetry(int wait); virtual void onAbort(Exception* ex); virtual bool executeInternal() = 0; void setReadCheckSocket(Socket* socket); void setWriteCheckSocket(Socket* socket); void setUploadLimit(int uploadLimit); void setUploadLimitCheck(bool check); private: bool checkSocketIsReadable; bool checkSocketIsWritable; Socket* readCheckTarget; Socket* writeCheckTarget; bool uploadLimitCheck; int uploadLimit; public: PeerAbstractCommand(int cuid, Peer* peer, TorrentDownloadEngine* e, const Socket* s = NULL); virtual ~PeerAbstractCommand(); bool execute(); }; #endif // _D_PEER_ABSTRACT_COMMAND_H_