/* */ #ifndef _D_PEER_ABSTRACT_COMMAND_H_ #define _D_PEER_ABSTRACT_COMMAND_H_ #include "BtContextAwareCommand.h" #include "Request.h" #include "TorrentDownloadEngine.h" #include "TimeA2.h" #include "Exception.h" class PeerAbstractCommand : public BtContextAwareCommand { private: Time checkPoint; int timeout; protected: TorrentDownloadEngine* e; SocketHandle socket; PeerHandle 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(const SocketHandle& socket); void setWriteCheckSocket(const SocketHandle& socket); void disableReadCheckSocket(); void disableWriteCheckSocket(); void setUploadLimit(int uploadLimit); void setUploadLimitCheck(bool check); void setNoCheck(bool check); private: bool checkSocketIsReadable; bool checkSocketIsWritable; SocketHandle readCheckTarget; SocketHandle writeCheckTarget; bool uploadLimitCheck; int uploadLimit; bool noCheck; public: PeerAbstractCommand(int cuid, const PeerHandle& peer, TorrentDownloadEngine* e, const BtContextHandle& btContext, const SocketHandle& s = SocketHandle()); virtual ~PeerAbstractCommand(); bool execute(); }; #endif // _D_PEER_ABSTRACT_COMMAND_H_