5#ifndef WPINET_UV_UTIL_H_
6#define WPINET_UV_UTIL_H_
14#pragma comment(lib, "Ws2_32.lib")
33template <detail::StringAssignable T>
34int AddrToName(
const sockaddr_in& addr, T* ip,
unsigned int* port) {
38 ip->assign(name, name + std::strlen(name));
39 *port = ntohs(addr.sin_port);
41 ip->assign(name, name);
53template <detail::StringAssignable T>
54int AddrToName(
const sockaddr_in6& addr, T* ip,
unsigned int* port) {
58 ip->assign(name, name + std::strlen(name));
59 *port = ntohs(addr.sin6_port);
61 ip->assign(name, name);
73template <detail::StringAssignable T>
74int AddrToName(
const sockaddr_storage& addr, T* ip,
unsigned int* port) {
75 if (addr.ss_family == AF_INET) {
76 return AddrToName(
reinterpret_cast<const sockaddr_in&
>(addr), ip, port);
78 if (addr.ss_family == AF_INET6) {
79 return AddrToName(
reinterpret_cast<const sockaddr_in6&
>(addr), ip, port);
81 char name[1] = {
'\0'};
82 ip->assign(name, name);
92template <detail::StringAssignable T>
97 ip->assign(name, name + std::strlen(name));
99 ip->assign(name, name);
110template <detail::StringAssignable T>
115 ip->assign(name, name + std::strlen(name));
117 ip->assign(name, name);
129int NameToAddr(std::string_view ip,
unsigned int port, sockaddr_in* addr);
138int NameToAddr(std::string_view ip,
unsigned int port, sockaddr_in6* addr);
detail namespace with internal helper functions
Definition input_adapters.h:32
int NameToAddr(std::string_view ip, unsigned int port, sockaddr_in *addr)
Convert a string containing an IPv4 address to a binary structure.
int AddrToName(const sockaddr_in &addr, T *ip, unsigned int *port)
Convert a binary structure containing an IPv4 address to a string.
Definition util.h:34
UV_EXTERN int uv_ip4_name(const struct sockaddr_in *src, char *dst, size_t size)
UV_EXTERN int uv_inet_ntop(int af, const void *src, char *dst, size_t size)
UV_EXTERN int uv_ip6_name(const struct sockaddr_in6 *src, char *dst, size_t size)