26#ifndef MYSQL_HARNESS_DESTINATION_ACCEPTOR_INCLUDED
27#define MYSQL_HARNESS_DESTINATION_ACCEPTOR_INCLUDED
29#include "harness_export.h"
50 bool is_tcp()
const {
return std::holds_alternative<TcpType>(acceptor_); }
65 return as_local().bind(ep.
as_local());
68 return as_tcp().bind(ep.
as_tcp());
73 return as_local().listen(backlog);
76 return as_tcp().listen(backlog);
81 return as_local().native_non_blocking(val);
84 return as_tcp().native_non_blocking(val);
89 return as_local().native_handle();
92 return as_tcp().native_handle();
95 template <
typename SettableSocketOption>
97 const SettableSocketOption &option) {
99 return as_local().set_option(option);
102 return as_tcp().set_option(option);
107 return as_local().get_executor();
110 return as_tcp().get_executor();
117 return as_local().cancel();
120 return as_tcp().cancel();
125 return as_local().close();
128 return as_tcp().close();
131 template <
class CompletionToken>
134 return as_local().async_wait(wt, std::forward<CompletionToken>(token));
137 return as_tcp().async_wait(wt, std::forward<CompletionToken>(token));
140 template <
class CompletionToken>
143 return as_local().async_accept(std::forward<CompletionToken>(token));
146 return as_tcp().async_accept(std::forward<CompletionToken>(token));
149 template <
class CompletionToken>
151 CompletionToken &&token) {
157 return as_local().async_accept(ep.
as_local(),
158 std::forward<CompletionToken>(token));
166 return as_tcp().async_accept(ep.
as_tcp(),
167 std::forward<CompletionToken>(token));
170 template <
class CompletionToken>
173 return as_local().async_accept(io_ctx,
174 std::forward<CompletionToken>(token));
177 return as_tcp().async_accept(io_ctx, std::forward<CompletionToken>(token));
net::basic_socket_acceptor< stream_protocol > acceptor
Definition: local.h:305
Definition: destination_acceptor.h:40
stdx::expected< void, std::error_code > bind(const mysql_harness::DestinationEndpoint &ep)
Definition: destination_acceptor.h:62
const LocalType & as_local() const
Definition: destination_acceptor.h:57
stdx::expected< void, std::error_code > cancel()
Definition: destination_acceptor.h:115
net::io_context & io_context()
Definition: destination_acceptor.h:113
LocalType & as_local()
Definition: destination_acceptor.h:56
DestinationAcceptor(net::io_context &io_ctx)
Definition: destination_acceptor.h:45
bool is_local() const
Definition: destination_acceptor.h:51
auto async_accept(CompletionToken &&token)
Definition: destination_acceptor.h:141
bool is_tcp() const
Definition: destination_acceptor.h:50
stdx::expected< void, std::error_code > set_option(const SettableSocketOption &option)
Definition: destination_acceptor.h:96
stdx::expected< void, std::error_code > listen(int backlog)
Definition: destination_acceptor.h:71
TcpType & as_tcp()
Definition: destination_acceptor.h:53
net::io_context::executor_type get_executor()
Definition: destination_acceptor.h:105
const TcpType & as_tcp() const
Definition: destination_acceptor.h:54
stdx::expected< void, std::error_code > native_non_blocking(bool val)
Definition: destination_acceptor.h:79
std::variant< TcpType, LocalType > acceptor_
Definition: destination_acceptor.h:181
void async_accept(net::io_context &io_ctx, CompletionToken &&token)
Definition: destination_acceptor.h:171
net::impl::socket::native_handle_type native_handle() const
Definition: destination_acceptor.h:87
DestinationAcceptor(LocalType sock)
Definition: destination_acceptor.h:48
auto async_wait(net::socket_base::wait_type wt, CompletionToken &&token)
Definition: destination_acceptor.h:132
auto async_accept(mysql_harness::DestinationEndpoint &ep, CompletionToken &&token)
Definition: destination_acceptor.h:150
stdx::expected< void, std::error_code > close()
Definition: destination_acceptor.h:123
DestinationAcceptor(TcpType sock)
Definition: destination_acceptor.h:47
Definition: destination_endpoint.h:38
TcpType & as_tcp()
Definition: destination_endpoint.h:50
bool is_local() const
Definition: destination_endpoint.h:48
LocalType & as_local()
Definition: destination_endpoint.h:53
bool is_tcp() const
Definition: destination_endpoint.h:47
Definition: socket.h:1293
Definition: io_context.h:991
Definition: io_context.h:61
Definition: internet.h:678
basic_socket_acceptor< tcp > acceptor
Definition: internet.h:1160
Definition: expected.h:286
static MYSQL * sock
Definition: mysqlcheck.cc:57
wait_type
Definition: socket_constants.h:86
int native_handle_type
Definition: socket_constants.h:51
Definition: gcs_xcom_synode.h:64
stdx::expected< int, std::error_code > open(const char *fname, int flags, mode_t mode) noexcept
Definition: file_handle.cc:79