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:1004
 
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