26#ifndef MYSQL_HARNESS_DESTINATION_SOCKET_INCLUDED
27#define MYSQL_HARNESS_DESTINATION_SOCKET_INCLUDED
29#include "harness_export.h"
48 bool is_tcp()
const {
return std::holds_alternative<TcpType>(sock_); }
62 return as_local().is_open();
65 return as_tcp().is_open();
70 return as_local().native_non_blocking(val);
73 return as_tcp().native_non_blocking(val);
78 return as_local().native_handle();
81 return as_tcp().native_handle();
87 template <
typename SettableSocketOption>
89 const SettableSocketOption &option) {
91 return as_local().set_option(option);
94 return as_tcp().set_option(option);
97 template <
typename GettableSocketOption>
99 GettableSocketOption &option)
const {
101 return as_local().get_option(option);
104 return as_tcp().get_option(option);
109 return as_local().get_executor();
112 return as_tcp().get_executor();
119 return as_local().cancel();
122 return as_tcp().cancel();
127 return as_local().close();
130 return as_tcp().close();
133 template <
class CompletionToken>
136 return as_local().async_wait(wt, std::forward<CompletionToken>(token));
139 return as_tcp().async_wait(wt, std::forward<CompletionToken>(token));
142 template <
class DynamicBuffer,
class CompletionToken>
143 void async_send(DynamicBuffer &&dyn_buf, CompletionToken &&token)
144 requires(net::is_dynamic_buffer_v<DynamicBuffer>)
148 std::forward<CompletionToken>(token));
152 std::forward<CompletionToken>(token));
155 template <
class DynamicBuffer,
class CompletionToken>
156 void async_recv(DynamicBuffer &&dyn_buf, CompletionToken &&token)
157 requires(net::is_dynamic_buffer_v<DynamicBuffer>)
160 return net::async_read(as_local(), std::forward<DynamicBuffer>(dyn_buf),
161 std::forward<CompletionToken>(token));
165 std::forward<CompletionToken>(token));
169 std::variant<TcpType, LocalType>
sock_;
net::basic_stream_socket< stream_protocol > socket
Definition: local.h:304
Definition: destination_endpoint.h:38
Definition: destination_socket.h:40
net::io_context & io_context()
Definition: destination_socket.h:115
net::io_context::executor_type get_executor()
Definition: destination_socket.h:107
void async_recv(DynamicBuffer &&dyn_buf, CompletionToken &&token)
Definition: destination_socket.h:156
stdx::expected< void, std::error_code > native_non_blocking(bool val)
Definition: destination_socket.h:68
stdx::expected< void, std::error_code > cancel()
Definition: destination_socket.h:117
DestinationSocket(LocalType sock)
Definition: destination_socket.h:46
bool is_open() const
Definition: destination_socket.h:60
stdx::expected< void, std::error_code > get_option(GettableSocketOption &option) const
Definition: destination_socket.h:98
const LocalType & as_local() const
Definition: destination_socket.h:55
const TcpType & as_tcp() const
Definition: destination_socket.h:52
bool is_tcp() const
Definition: destination_socket.h:48
LocalType & as_local()
Definition: destination_socket.h:54
void async_send(DynamicBuffer &&dyn_buf, CompletionToken &&token)
Definition: destination_socket.h:143
DestinationSocket(TcpType sock)
Definition: destination_socket.h:45
void async_wait(net::socket_base::wait_type wt, CompletionToken &&token)
Definition: destination_socket.h:134
net::impl::socket::native_handle_type native_handle() const
Definition: destination_socket.h:76
TcpType & as_tcp()
Definition: destination_socket.h:51
bool is_local() const
Definition: destination_socket.h:49
stdx::expected< void, std::error_code > set_option(const SettableSocketOption &option)
Definition: destination_socket.h:88
stdx::expected< void, std::error_code > close()
Definition: destination_socket.h:125
std::variant< TcpType, LocalType > sock_
Definition: destination_socket.h:169
Definition: socket.h:1090
Definition: io_context.h:991
Definition: io_context.h:61
basic_stream_socket< tcp > socket
Definition: internet.h:1159
Definition: expected.h:286
static int flags[50]
Definition: hp_test1.cc:40
static MYSQL * sock
Definition: mysqlcheck.cc:57
wait_type
Definition: socket_constants.h:86
stdx::expected< void, error_type > connect(native_handle_type native_handle, const struct sockaddr *addr, size_t addr_len)
wrap connect() in a portable way.
Definition: socket.h:353
int native_handle_type
Definition: socket_constants.h:51
void async_read(AsyncReadStream &stream, DynamicBuffer &&b, CompletionCondition completion_condition, CompletionToken &&token)
Definition: buffer.h:933
void async_write(AsyncWriteStream &stream, const ConstBufferSequence &buffers, CompletionCondition cond, CompletionToken &&token)
Definition: buffer.h:1066
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