/* */ #ifndef D_DHT_TASK_FACTORY_H #define D_DHT_TASK_FACTORY_H #include "common.h" #include namespace aria2 { class DownloadContext; class PeerStorage; class DHTTask; class DHTNode; class DHTBucket; class DHTTaskFactory { public: virtual ~DHTTaskFactory() {} virtual std::shared_ptr createPingTask(const std::shared_ptr& remoteNode, int numRetry = 0) = 0; virtual std::shared_ptr createNodeLookupTask(const unsigned char* targetID) = 0; virtual std::shared_ptr createBucketRefreshTask() = 0; virtual std::shared_ptr createPeerLookupTask(const std::shared_ptr& ctx, uint16_t tcpPort, const std::shared_ptr& peerStorage) = 0; virtual std::shared_ptr createPeerAnnounceTask(const unsigned char* infoHash) = 0; virtual std::shared_ptr createReplaceNodeTask(const std::shared_ptr& bucket, const std::shared_ptr& newNode) = 0; }; } // namespace aria2 #endif // D_DHT_TASK_FACTORY_H