summaryrefslogtreecommitdiff
path: root/src/AbstractCommand.h
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-05-08 11:18:36 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-05-08 11:18:36 +0000
commitd52bce74d3a40d75dcfa3496e67abbed9f1fcba8 (patch)
tree09c82779bd07f661340800db790e68fe612ca56c /src/AbstractCommand.h
parentd8f911b5815f2f6857b1c0035182391e5d6ecaf5 (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.h32
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,