53 uint32_t v6scope = 0);
60 [[nodiscard]] std::string
address()
const {
63 [[nodiscard]] uint16_t
port()
const;
70 [[nodiscard]] std::string
toString()
const;
73 std::variant<struct sockaddr_in, struct sockaddr_in6>
addr_;
77 static std::string
operator()(
const struct sockaddr_in &ipv4);
78 static std::string
operator()(
const struct sockaddr_in6 &ipv6);
79 static std::string
ntop(
int family,
void *addr);
93 int af_hint = AF_UNSPEC);
97 int af_hint = AF_UNSPEC);
103 struct addrinfo *result);
115 std::optional<std::coroutine_handle<>>
handle_;
AddressHandle is a light-weight wrapper around a struct sockaddr_in(6), and is therefore cheap to cop...
Definition name_resolution.h:38
static constexpr size_t ipv4Length
Definition name_resolution.h:42
std::string address() const
Definition name_resolution.h:60
std::variant< struct sockaddr_in, struct sockaddr_in6 > addr_
Definition name_resolution.h:73
AddressHandle(AddressHandle &&)=default
int family() const
Family is either AF_INET or AF_INET6.
Definition name_resolution.cc:76
const struct sockaddr * sockaddr() const
Definition name_resolution.cc:83
AddressHandle(const AddressHandle &)=default
std::string toString() const
Definition name_resolution.cc:58
uint16_t port() const
Definition name_resolution.cc:67
AddressHandle & operator=(AddressHandle &&)=default
static constexpr size_t ipv6Length
Definition name_resolution.h:43
AddressHandle & operator=(const AddressHandle &)=default
Asynchronous name resolution using the libuv getaddrinfo(3) interface.
Definition name_resolution.h:84
Resolver(const Loop &loop)
Instantiate a resolver based on an event loop.
Definition name_resolution.h:89
const Loop * loop_
Definition name_resolution.h:100
Promise< AddressHandle > gai(std::string_view host, std::string_view port, int af_hint=AF_UNSPEC)
Resolve a host and port string. Throws an UvcoException upon error.
Definition name_resolution.cc:153
static void onAddrinfo(uv_getaddrinfo_t *req, uv_status status, struct addrinfo *result)
Definition name_resolution.cc:177
int uv_status
Result of a libuv operation, an errno error code.
Definition internal_utils.h:22
Definition async_work.cc:17
A helper for calling inet_ntop(3).
Definition name_resolution.h:76
static std::string operator()(const struct sockaddr_in &ipv4)
Definition name_resolution.cc:217
static std::string ntop(int family, void *addr)
Definition name_resolution.cc:196
Definition name_resolution.h:105
bool await_ready() const
Definition name_resolution.h:107
AddrinfoAwaiter_()
Definition name_resolution.h:106
std::optional< int > status_
Definition name_resolution.h:114
std::optional< std::coroutine_handle<> > handle_
Definition name_resolution.h:115
struct addrinfo * await_resume()
Definition name_resolution.cc:186
std::optional< struct addrinfo * > addrinfo_
Definition name_resolution.h:113
uv_getaddrinfo_t req_
Definition name_resolution.h:112
bool await_suspend(std::coroutine_handle<> handle)
Definition name_resolution.cc:191