24 #ifndef __NETCOMM_UTILS_RESOLVER_H_
25 #define __NETCOMM_UTILS_RESOLVER_H_
27 #include <core/utils/lock_hashmap.h>
28 #include <core/utils/lock_map.h>
29 #include <utils/misc/string_compare.h>
31 #include <sys/socket.h>
32 #include <netinet/in.h>
45 class NetworkNameResolverThread;
56 bool resolve_name(
const char *name,
struct sockaddr **addr, socklen_t *addrlen);
57 bool resolve_name_blocking(
const char *name,
struct sockaddr **addr, socklen_t *addrlen);
58 bool resolve_address(
struct sockaddr *addr, socklen_t addr_len, std::string &name);
61 void set_cache_timeout(
unsigned int sec);
62 unsigned int cache_timeout();
64 const char * hostname();
65 const char * short_hostname();
68 void name_resolved(
char *name,
struct sockaddr *addr, socklen_t addrlen);
69 void addr_resolved(
struct sockaddr *addr, socklen_t addrlen,
char *name,
bool namefound);
70 void name_resolution_failed(
char *name);
71 void address_resolution_failed(
struct sockaddr *addr, socklen_t addrlen);
76 unsigned int __cache_timeout;
80 std::pair<struct sockaddr *, time_t>,
81 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2)
82 std::tr1::hash<char *>,
84 __gnu_cxx::hash<char *>,
90 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2)
91 std::tr1::hash<char *>,
93 __gnu_cxx::hash<char *>,
Worker thread for NetworkNameResolver.
Network name and address resolver.