/* */ #ifndef _D_DHT_GET_PEERS_COMMAND_H_ #define _D_DHT_GET_PEERS_COMMAND_H_ #include "Command.h" #include "RequestGroupAware.h" #include "SharedHandle.h" #include "TimeA2.h" namespace aria2 { class DHTTaskQueue; class DHTTaskFactory; class DHTPeerLookupTask; class DownloadEngine; class RequestGroup; class BtContext; class BtRuntime; class PeerStorage; class DHTGetPeersCommand:public Command, public RequestGroupAware { private: static const time_t GET_PEER_INTERVAL = (15*60); static const time_t RETRY_INTERVAL = 60; static const size_t MAX_RETRIES = 10; SharedHandle _btContext; SharedHandle _btRuntime; SharedHandle _peerStorage; DownloadEngine* _e; SharedHandle _taskQueue; SharedHandle _taskFactory; SharedHandle _task; size_t _numRetry; Time _lastGetPeerTime; public: DHTGetPeersCommand(int32_t cuid, RequestGroup* requestGroup, DownloadEngine* e, const SharedHandle& ctx); virtual ~DHTGetPeersCommand(); virtual bool execute(); void setTaskQueue(const SharedHandle& taskQueue); void setTaskFactory(const SharedHandle& taskFactory); void setBtRuntime(const SharedHandle& btRuntime); void setPeerStorage(const SharedHandle& peerStorage); }; } // namespace aria2 #endif // _D_DHT_GET_PEERS_COMMAND_H_