/* */ #ifndef D_NAME_RESOLVE_COMMAND_H #define D_NAME_RESOLVE_COMMAND_H #include "Command.h" #include #include #include // TODO Make this class generic. namespace aria2 { class DownloadEngine; #ifdef ENABLE_ASYNC_DNS class AsyncNameResolverMan; #endif // ENABLE_ASYNC_DNS struct UDPTrackerRequest; class NameResolveCommand : public Command { private: DownloadEngine* e_; #ifdef ENABLE_ASYNC_DNS std::unique_ptr asyncNameResolverMan_; #endif // ENABLE_ASYNC_DNS #ifdef ENABLE_ASYNC_DNS int resolveHostname(std::vector& res, const std::string& hostname); #endif // ENABLE_ASYNC_DNS std::shared_ptr req_; void onShutdown(); void onFailure(); void onSuccess(const std::vector& addrs, DownloadEngine* e); public: NameResolveCommand(cuid_t cuid, DownloadEngine* e, const std::shared_ptr& req); virtual ~NameResolveCommand(); virtual bool execute() CXX11_OVERRIDE; }; } // namespace aria2 #endif // D_NAME_RESOVE_COMMAND_H