diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-05-08 11:18:36 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-05-08 11:18:36 +0000 |
| commit | d52bce74d3a40d75dcfa3496e67abbed9f1fcba8 (patch) | |
| tree | 09c82779bd07f661340800db790e68fe612ca56c /src/AbstractCommand.h | |
| parent | d8f911b5815f2f6857b1c0035182391e5d6ecaf5 (diff) | |
2008-05-08 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Rewritten name resolver. Now async DNS can be disabled by
--async-dns
option.
The asynchronous DNS is not capable of IPv6 yet.
By disabling asynchronous DNS, aria2 is IPv6 enabled
application, at
least for HTTP download.
* src/AbstractCommand.cc
* src/AbstractCommand.h
* src/AsyncNameResolver.cc
* src/AsyncNameResolver.h
* src/DHTEntryPointNameResolveCommand.cc
* src/DHTEntryPointNameResolveCommand.h
* src/DownloadEngine.cc
* src/DownloadEngine.h
* src/FtpInitiateConnectionCommand.cc
* src/FtpInitiateConnectionCommand.h
* src/HelpItemFactory.cc
* src/HttpInitiateConnectionCommand.cc
* src/HttpInitiateConnectionCommand.h
* src/InitiateConnectionCommand.cc
* src/InitiateConnectionCommand.h
* src/Makefile.am
* src/Makefile.in
* src/NameResolver.cc
* src/NameResolver.h
* src/OptionHandlerFactory.cc
* src/SocketCore.cc
* src/SocketCore.h
* src/Util.cc
* src/Util.h
* src/option_processing.cc
* src/prefs.h
* src/usage_text.h
Diffstat (limited to 'src/AbstractCommand.h')
| -rw-r--r-- | src/AbstractCommand.h | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/src/AbstractCommand.h b/src/AbstractCommand.h index 831a0ada..45151ef6 100644 --- a/src/AbstractCommand.h +++ b/src/AbstractCommand.h @@ -46,9 +46,11 @@ class Request; class DownloadEngine; class RequestGroup; class Segment; -class NameResolver; class Exception; class SocketCore; +#ifdef ENABLE_ASYNC_DNS +class AsyncNameResolver; +#endif // ENABLE_ASYNC_DNS class AbstractCommand : public Command, public RequestGroupAware { private: @@ -60,6 +62,18 @@ protected: SharedHandle<SocketCore> socket; std::deque<SharedHandle<Segment> > _segments; +#ifdef ENABLE_ASYNC_DNS + SharedHandle<AsyncNameResolver> _asyncNameResolver; + + bool isAsyncNameResolverInitialized() const; + + void initAsyncNameResolver(const std::string& hostname); + + bool asyncResolveHostname(); + + const std::deque<std::string>& getResolvedAddresses(); +#endif // ENABLE_ASYNC_DNS + void tryReserved(); virtual bool prepareForRetry(time_t wait); virtual void onAbort(); @@ -69,13 +83,7 @@ protected: void setWriteCheckSocket(const SharedHandle<SocketCore>& socket); void disableReadCheckSocket(); void disableWriteCheckSocket(); - bool resolveHostname(const std::string& hostname, - const SharedHandle<NameResolver>& nameResolver); -#ifdef ENABLE_ASYNC_DNS - void setNameResolverCheck(const SharedHandle<NameResolver>& resolver); - void disableNameResolverCheck(const SharedHandle<NameResolver>& resolver); - virtual bool nameResolveFinished() const; -#endif // ENABLE_ASYNC_DNS + void setTimeout(time_t timeout) { this->timeout = timeout; } void prepareForNextAction(Command* nextCommand = 0); @@ -87,6 +95,14 @@ private: SharedHandle<SocketCore> writeCheckTarget; bool nameResolverCheck; +#ifdef ENABLE_ASYNC_DNS + + void setNameResolverCheck(const SharedHandle<AsyncNameResolver>& resolver); + + void disableNameResolverCheck(const SharedHandle<AsyncNameResolver>& resolver); + bool nameResolveFinished() const; + +#endif // ENABLE_ASYNC_DNS public: AbstractCommand(int32_t cuid, const SharedHandle<Request>& req, RequestGroup* requestGroup, DownloadEngine* e, |
