#pragma once #include "pqi/pqinetwork.h" #ifndef WIN32 #include #endif #include #include #include "util/rsthreads.h" struct sockaddr ; class DNSResolver { public: DNSResolver() ; ~DNSResolver() ; bool getIPAddressFromString(const std::string& server_name,struct in_addr& addr) ; void start_request() ; void reset() ; private: enum { DNS_DONT_HAVE,DNS_SEARCHING, DNS_HAVE, DNS_LOOKUP_ERROR } ; struct AddrInfo { uint32_t state ; // state: Looked-up, not found, have time_t last_lookup_time ; // last lookup time struct in_addr addr ; }; friend void *solveDNSEntries(void *p) ; RsMutex _rdnsMtx ; bool *_thread_running ; std::map *_addr_map ; };