/* */ #ifndef D_DHT_ENTRY_POINT_NAME_RESOVE_COMMAND_H #define D_DHT_ENTRY_POINT_NAME_RESOVE_COMMAND_H #include "Command.h" #include #include #include #include #include namespace aria2 { class DHTTaskQueue; class DHTTaskFactory; class DHTRoutingTable; class DHTNode; class DownloadEngine; #ifdef ENABLE_ASYNC_DNS class AsyncNameResolverMan; #endif // ENABLE_ASYNC_DNS class DHTEntryPointNameResolveCommand:public Command { private: DownloadEngine* e_; #ifdef ENABLE_ASYNC_DNS std::shared_ptr asyncNameResolverMan_; #endif // ENABLE_ASYNC_DNS DHTTaskQueue* taskQueue_; DHTTaskFactory* taskFactory_; DHTRoutingTable* routingTable_; std::shared_ptr localNode_; std::deque> entryPoints_; int numSuccess_; bool bootstrapEnabled_; void addPingTask(const std::pair& addr); #ifdef ENABLE_ASYNC_DNS int resolveHostname(std::vector& res, const std::string& hostname); #endif // ENABLE_ASYNC_DNS public: DHTEntryPointNameResolveCommand (cuid_t cuid, DownloadEngine* e, const std::vector >& entryPoints); virtual ~DHTEntryPointNameResolveCommand(); virtual bool execute(); void setBootstrapEnabled(bool f); void setTaskQueue(DHTTaskQueue* taskQueue); void setTaskFactory(DHTTaskFactory* taskFactory); void setRoutingTable(DHTRoutingTable* routingTable); void setLocalNode(const std::shared_ptr& localNode); }; } // namespace aria2 #endif // D_DHT_ENTRY_POINT_NAME_RESOVE_COMMAND_H