/* */ #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 Logger; class DHTTaskFactoryImpl:public DHTTaskFactory { private: SharedHandle _localNode; WeakHandle _routingTable; WeakHandle _dispatcher; WeakHandle _factory; WeakHandle _taskQueue; time_t _timeout; Logger* _logger; void setCommonProperty(const SharedHandle& task); public: DHTTaskFactoryImpl(); virtual ~DHTTaskFactoryImpl(); virtual SharedHandle createPingTask(const SharedHandle& remoteNode, size_t numRetry = 0); virtual SharedHandle createNodeLookupTask(const unsigned char* targetID); virtual SharedHandle createBucketRefreshTask(); virtual SharedHandle createPeerLookupTask(const SharedHandle& ctx, const SharedHandle& btRuntime, const SharedHandle& peerStorage); virtual SharedHandle createPeerAnnounceTask(const unsigned char* infoHash); virtual SharedHandle createReplaceNodeTask(const SharedHandle& bucket, const SharedHandle& newNode); void setRoutingTable(const WeakHandle routingTable); void setMessageDispatcher(const WeakHandle dispatcher); void setMessageFactory(const WeakHandle factory); void setTaskQueue(const WeakHandle taskQueue); void setLocalNode(const SharedHandle& localNode); void setTimeout(time_t timeout) { _timeout = timeout; } }; } // namespace aria2 #endif // _D_DHT_TASK_FACTORY_IMPL_H_