/* */ #ifndef D_DHT_REPLACE_NODE_TASK_H #define D_DHT_REPLACE_NODE_TASK_H #include "DHTAbstractTask.h" #include "a2time.h" namespace aria2 { class DHTBucket; class DHTPingReplyMessage; class DHTReplaceNodeTask : public DHTAbstractTask { private: std::shared_ptr bucket_; std::shared_ptr newNode_; int numRetry_; std::chrono::seconds timeout_; void sendMessage(); public: DHTReplaceNodeTask(const std::shared_ptr& bucket, const std::shared_ptr& newNode); virtual ~DHTReplaceNodeTask(); virtual void startup() CXX11_OVERRIDE; void onReceived(const DHTPingReplyMessage* message); void onTimeout(const std::shared_ptr& node); void setTimeout(std::chrono::seconds timeout) { timeout_ = std::move(timeout); } }; } // namespace aria2 #endif // D_DHT_REPLACE_NODE_TASK_H