1 #ifndef UVW_DNS_INCLUDE_H
2 #define UVW_DNS_INCLUDE_H
23 using Deleter = void(*)(addrinfo *);
33 std::unique_ptr<addrinfo, Deleter>
data;
72 static void addrInfoCallback(uv_getaddrinfo_t *req,
int status, addrinfo *res);
73 void nodeAddrInfo(
const char *node,
const char *service, addrinfo *hints =
nullptr);
74 auto nodeAddrInfoSync(
const char *node,
const char *service, addrinfo *hints =
nullptr);
77 using Deleter = void(*)(addrinfo *);
79 using Request::Request;
87 void nodeAddrInfo(
const std::string &node, addrinfo *hints =
nullptr);
100 std::pair<bool, std::unique_ptr<addrinfo, Deleter>>
nodeAddrInfoSync(
const std::string &node, addrinfo *hints =
nullptr);
121 std::pair<bool, std::unique_ptr<addrinfo, Deleter>>
serviceAddrInfoSync(
const std::string &service, addrinfo *hints =
nullptr);
130 void addrInfo(
const std::string &node,
const std::string &service, addrinfo *hints =
nullptr);
144 std::pair<bool, std::unique_ptr<addrinfo, Deleter>>
addrInfoSync(
const std::string &node,
const std::string &service, addrinfo *hints =
nullptr);
157 static void nameInfoCallback(uv_getnameinfo_t *req,
int status,
const char *hostname,
const char *service);
160 using Request::Request;
167 void nameInfo(
const sockaddr &addr,
int flags = 0);
175 template<
typename I = IPv4>
176 void nameInfo(
const std::string &ip,
unsigned int port,
int flags = 0);
183 template<
typename I = IPv4>
198 std::pair<bool, std::pair<const char *, const char *>>
nameInfoSync(
const sockaddr &addr,
int flags = 0);
213 template<
typename I = IPv4>
214 std::pair<bool, std::pair<const char *, const char *>>
nameInfoSync(
const std::string &ip,
unsigned int port,
int flags = 0);
228 template<
typename I = IPv4>
229 std::pair<bool, std::pair<const char *, const char *>>
nameInfoSync(
Addr addr,
int flags = 0);
241 extern template void GetNameInfoReq::nameInfo<IPv4>(
const std::string &,
unsigned int,
int);
242 extern template void GetNameInfoReq::nameInfo<IPv6>(
const std::string &,
unsigned int,
int);
244 extern template void GetNameInfoReq::nameInfo<IPv4>(
Addr,
int);
245 extern template void GetNameInfoReq::nameInfo<IPv6>(
Addr,
int);
247 extern template std::pair<bool, std::pair<const char *, const char *>> GetNameInfoReq::nameInfoSync<IPv4>(
const std::string &,
unsigned int,
int);
248 extern template std::pair<bool, std::pair<const char *, const char *>> GetNameInfoReq::nameInfoSync<IPv6>(
const std::string &,
unsigned int,
int);
250 extern template std::pair<bool, std::pair<const char *, const char *>> GetNameInfoReq::nameInfoSync<IPv4>(
Addr,
int);
251 extern template std::pair<bool, std::pair<const char *, const char *>> GetNameInfoReq::nameInfoSync<IPv6>(
Addr,
int);
The GetAddrInfoReq request.
void addrInfo(const std::string &node, const std::string &service, addrinfo *hints=nullptr)
Async getaddrinfo.
std::pair< bool, std::unique_ptr< addrinfo, Deleter > > addrInfoSync(const std::string &node, const std::string &service, addrinfo *hints=nullptr)
Sync getaddrinfo.
std::pair< bool, std::unique_ptr< addrinfo, Deleter > > nodeAddrInfoSync(const std::string &node, addrinfo *hints=nullptr)
Sync getaddrinfo.
void serviceAddrInfo(const std::string &service, addrinfo *hints=nullptr)
Async getaddrinfo.
void nodeAddrInfo(const std::string &node, addrinfo *hints=nullptr)
Async getaddrinfo.
std::pair< bool, std::unique_ptr< addrinfo, Deleter > > serviceAddrInfoSync(const std::string &service, addrinfo *hints=nullptr)
Sync getaddrinfo.
The GetNameInfoReq request.
std::pair< bool, std::pair< const char *, const char * > > nameInfoSync(Addr addr, int flags=0)
Sync getnameinfo.
void nameInfo(Addr addr, int flags=0)
Async getnameinfo.
std::pair< bool, std::pair< const char *, const char * > > nameInfoSync(const sockaddr &addr, int flags=0)
Sync getnameinfo.
void nameInfo(const sockaddr &addr, int flags=0)
Async getnameinfo.
void nameInfo(const std::string &ip, unsigned int port, int flags=0)
Async getnameinfo.
std::pair< bool, std::pair< const char *, const char * > > nameInfoSync(const std::string &ip, unsigned int port, int flags=0)
Sync getnameinfo.
std::unique_ptr< addrinfo, Deleter > data
An initialized instance of addrinfo.
const char * service
A valid service name.
const char * hostname
A valid hostname.