/* */ #ifndef D_DHT_TASK_FACTORY_IMPL_H #define D_DHT_TASK_FACTORY_IMPL_H #include "DHTTaskFactory.h" #include "a2time.h" namespace aria2 { class DHTNode; class DHTRoutingTable; class DHTMessageDispatcher; class DHTMessageFactory; class DHTTaskQueue; class DHTAbstractTask; class DHTTaskFactoryImpl:public DHTTaskFactory { private: SharedHandle localNode_; DHTRoutingTable* routingTable_; DHTMessageDispatcher* dispatcher_; DHTMessageFactory* factory_; DHTTaskQueue* taskQueue_; time_t timeout_; void setCommonProperty(const SharedHandle& task); public: DHTTaskFactoryImpl(); virtual ~DHTTaskFactoryImpl(); virtual SharedHandle createPingTask(const SharedHandle& remoteNode, int numRetry = 0); virtual SharedHandle createNodeLookupTask(const unsigned char* targetID); virtual SharedHandle createBucketRefreshTask(); virtual SharedHandle createPeerLookupTask(const SharedHandle& ctx, uint16_t tcpPort, const SharedHandle& peerStorage); virtual SharedHandle createPeerAnnounceTask(const unsigned char* infoHash); virtual SharedHandle createReplaceNodeTask(const SharedHandle& bucket, const SharedHandle& newNode); void setRoutingTable(DHTRoutingTable* routingTable); void setMessageDispatcher(DHTMessageDispatcher* dispatcher); void setMessageFactory(DHTMessageFactory* factory); void setTaskQueue(DHTTaskQueue* taskQueue); void setLocalNode(const SharedHandle& localNode); void setTimeout(time_t timeout) { timeout_ = timeout; } }; } // namespace aria2 #endif // D_DHT_TASK_FACTORY_IMPL_H