summaryrefslogtreecommitdiff
path: root/src/NameResolver.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/NameResolver.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/NameResolver.h')
-rw-r--r--src/NameResolver.h104
1 files changed, 6 insertions, 98 deletions
diff --git a/src/NameResolver.h b/src/NameResolver.h
index 203496ba..814d8732 100644
--- a/src/NameResolver.h
+++ b/src/NameResolver.h
@@ -36,115 +36,23 @@
#define _D_NAME_RESOLVER_H_
#include "common.h"
-#include "SharedHandle.h"
-#include "a2netcompat.h"
#include <string>
-
-#ifdef ENABLE_ASYNC_DNS
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-#include <ares.h>
-#ifdef __cplusplus
-} /* end of extern "C" */
-#endif
-
-#endif // ENABLE_ASYNC_DNS
+#include <deque>
namespace aria2 {
-#ifdef ENABLE_ASYNC_DNS
-
-#ifdef HAVE_LIBCARES1_5
-void callback(void* arg, int status, int timeouts, struct hostent* host);
-#else
-void callback(void* arg, int status, struct hostent* host);
-#endif // HAVE_LIBCARES1_5
-
-class NameResolver {
-#ifdef HAVE_LIBCARES1_5
- friend void callback(void* arg, int status, int timeouts, struct hostent* host);
-#else
- friend void callback(void* arg, int status, struct hostent* host);
-#endif // HAVE_LIBCARES1_5
-
-public:
- enum STATUS {
- STATUS_READY,
- STATUS_QUERYING,
- STATUS_SUCCESS,
- STATUS_ERROR,
- };
-private:
- STATUS status;
- ares_channel channel;
- struct in_addr addr;
- std::string error;
-public:
- NameResolver():
- status(STATUS_READY)
- {
- // TODO evaluate return value
- ares_init(&channel);
- }
-
- ~NameResolver() {
- ares_destroy(channel);
- }
-
- void resolve(const std::string& name);
-
- std::string getAddrString() const;
-
- const struct in_addr& getAddr() const {
- return addr;
- }
-
- const std::string& getError() const {
- return error;
- }
-
- STATUS getStatus() const {
- return status;
- }
-
- int getFds(fd_set* rfdsPtr, fd_set* wfdsPtr) const {
- return ares_fds(channel, rfdsPtr, wfdsPtr);
- }
-
- void process(fd_set* rfdsPtr, fd_set* wfdsPtr) {
- ares_process(channel, rfdsPtr, wfdsPtr);
- }
-
- bool operator==(const NameResolver& resolver) {
- return this == &resolver;
- }
-
- void setAddr(const std::string& addrString);
-
- void reset();
-};
-
-#else // ENABLE_ASYNC_DNS
-
class NameResolver {
private:
- struct in_addr _addr;
+ int _socktype;
public:
- void resolve(const std::string& hostname);
+ NameResolver();
- std::string getAddrString() const;
-
- void setAddr(const std::string& addrString);
+ std::deque<std::string> resolve(const std::string& hostname);
- void reset();
+ // specify SOCK_STREAM or SOCK_DGRAM
+ void setSocktype(int socktype);
};
-#endif // ENABLE_ASYNC_DNS
-
-typedef SharedHandle<NameResolver> NameResolverHandle;
-
} // namespace aria2
#endif // _D_NAME_RESOLVER_H_