/* */ #ifndef _D_PEER_ABSTRACT_COMMAND_H_ #define _D_PEER_ABSTRACT_COMMAND_H_ #include "Command.h" #include "SharedHandle.h" #include "TimeA2.h" namespace aria2 { class DownloadEngine; class Exception; class Peer; class SocketCore; class PeerAbstractCommand : public Command { private: Time checkPoint; int32_t timeout; protected: DownloadEngine* e; SharedHandle socket; SharedHandle peer; void setTimeout(int32_t timeout) { this->timeout = timeout; } virtual bool prepareForNextPeer(int32_t wait); virtual bool prepareForRetry(int32_t wait); virtual void onAbort(Exception* ex) {}; virtual bool exitBeforeExecute() = 0; virtual bool executeInternal() = 0; void setReadCheckSocket(const SharedHandle& socket); void setWriteCheckSocket(const SharedHandle& socket); void disableReadCheckSocket(); void disableWriteCheckSocket(); void setUploadLimit(int32_t uploadLimit); void setUploadLimitCheck(bool check); void setNoCheck(bool check); void updateKeepAlive(); private: bool checkSocketIsReadable; bool checkSocketIsWritable; SharedHandle readCheckTarget; SharedHandle writeCheckTarget; bool uploadLimitCheck; int32_t uploadLimit; bool noCheck; public: PeerAbstractCommand(int32_t cuid, const SharedHandle& peer, DownloadEngine* e, const SharedHandle& s); PeerAbstractCommand(int32_t cuid, const SharedHandle& peer, DownloadEngine* e); virtual ~PeerAbstractCommand(); virtual bool execute(); }; } // namespace aria2 #endif // _D_PEER_ABSTRACT_COMMAND_H_