Connect to a Unix domain socket at the given path.
86 {
88 const OnExit onExit{[&awaiter, req = awaiter.req_.get()] {
89 if (awaiter.handle_ != nullptr) {
91 }
92 }};
93
94#if UV_VERSION_MAJOR == 1 && UV_VERSION_MINOR >= 46
96 uv_pipe_connect2(awaiter.req_.release(), awaiter.pipe_.get(),
98 if (connectStatus != 0) {
100 throw UvcoException(connectStatus,
101 "UnixStreamClient::connect() failed immediately");
102 }
103#else
104 uv_pipe_connect(
connect.request_.release(),
connect.pipe_.get(), path.data(),
106#endif
107
108 std::optional<UvcoException> maybeError;
109
110
111 try {
112 co_return (co_await awaiter);
113 } catch (const UvcoException &e) {
114 maybeError = e;
115 }
117 BOOST_ASSERT(maybeError);
118 throw std::move(maybeError.value());
119}
Promise< UnixStream > connect(std::string_view path)
Connect to a Unix domain socket at the given path.
Definition uds.cc:86
void closeHandle(Handle *handle, void(*closer)(CloserArg *, void(*)(uv_handle_t *)))
Definition close.h:37
void resetRequestData(Request *req)
Definition internal_utils.h:95
int uv_status
Result of a libuv operation, an errno error code.
Definition internal_utils.h:22
static void onConnect(uv_connect_t *req, uv_status status)
Definition uds.cc:121