1 #ifndef UVW_DNS_INCLUDE_H
2 #define UVW_DNS_INCLUDE_H
23 using Deleter = void(*)(addrinfo *);
33 std::unique_ptr<addrinfo, Deleter>
data;
71 class GetAddrInfoReq final:
public Request<GetAddrInfoReq, uv_getaddrinfo_t> {
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(std::string node, addrinfo *hints =
nullptr);
100 std::pair<bool, std::unique_ptr<addrinfo, Deleter>> nodeAddrInfoSync(std::string node, addrinfo *hints =
nullptr);
121 std::pair<bool, std::unique_ptr<addrinfo, Deleter>>
serviceAddrInfoSync(std::string service, addrinfo *hints =
nullptr);
130 void addrInfo(std::string node, std::string service, addrinfo *hints =
nullptr);
144 std::pair<bool, std::unique_ptr<addrinfo, Deleter>>
addrInfoSync(std::string node, 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(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(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>(std::string ip,
unsigned int port,
int flags);
242 extern template void GetNameInfoReq::nameInfo<IPv6>(std::string ip,
unsigned int port,
int flags);
244 extern template void GetNameInfoReq::nameInfo<IPv4>(
Addr addr,
int flags);
245 extern template void GetNameInfoReq::nameInfo<IPv6>(
Addr addr,
int flags);
247 extern template std::pair<bool, std::pair<const char *, const char *>> GetNameInfoReq::nameInfoSync<IPv4>(std::string ip,
unsigned int port,
int flags);
248 extern template std::pair<bool, std::pair<const char *, const char *>> GetNameInfoReq::nameInfoSync<IPv6>(std::string ip,
unsigned int port,
int flags);
250 extern template std::pair<bool, std::pair<const char *, const char *>> GetNameInfoReq::nameInfoSync<IPv4>(
Addr addr,
int flags);
251 extern template std::pair<bool, std::pair<const char *, const char *>> GetNameInfoReq::nameInfoSync<IPv6>(
Addr addr,
int flags);
267 #endif // UVW_DNS_INCLUDE_H