47#ifdef WIN32_LEAN_AND_MEAN
53#include <netinet/in.h>
61#if defined(MYSQL_SERVER) || defined(PFS_DIRECT_CALL)
66#ifndef PSI_SOCKET_CALL
67#define PSI_SOCKET_CALL(M) psi_socket_service->M
80#ifdef HAVE_PSI_SOCKET_INTERFACE
81#define mysql_socket_register(P1, P2, P3) \
82 inline_mysql_socket_register(P1, P2, P3)
84#define mysql_socket_register(P1, P2, P3) \
101 const struct sockaddr *addr [[maybe_unused]],
102 socklen_t addr_len [[maybe_unused]]
105#ifdef HAVE_PSI_SOCKET_INTERFACE
106 if (
socket.m_psi !=
nullptr) {
124#ifdef HAVE_PSI_SOCKET_INTERFACE
125 if (
socket.m_psi !=
nullptr) {
138 return mysql_socket.
fd;
149 if (
likely(mysql_socket !=
nullptr)) {
150 mysql_socket->
fd = fd;
164#ifdef HAVE_PSI_SOCKET_INTERFACE
165#define MYSQL_SOCKET_WAIT_VARIABLES(LOCKER, STATE) \
166 struct PSI_socket_locker *LOCKER; \
167 PSI_socket_locker_state STATE;
169#define MYSQL_SOCKET_WAIT_VARIABLES(LOCKER, STATE)
183#ifdef HAVE_PSI_SOCKET_INTERFACE
184#define MYSQL_START_SOCKET_WAIT(LOCKER, STATE, SOCKET, OP, COUNT) \
185 LOCKER = inline_mysql_start_socket_wait(STATE, SOCKET, OP, COUNT, __FILE__, \
188#define MYSQL_START_SOCKET_WAIT(LOCKER, STATE, SOCKET, OP, COUNT) \
201#ifdef HAVE_PSI_SOCKET_INTERFACE
202#define MYSQL_END_SOCKET_WAIT(LOCKER, COUNT) \
203 inline_mysql_end_socket_wait(LOCKER, COUNT)
205#define MYSQL_END_SOCKET_WAIT(LOCKER, COUNT) \
217#ifdef HAVE_PSI_SOCKET_INTERFACE
218#define MYSQL_SOCKET_SET_STATE(SOCKET, STATE) \
219 inline_mysql_socket_set_state(SOCKET, STATE)
221#define MYSQL_SOCKET_SET_STATE(SOCKET, STATE) \
226#ifdef HAVE_PSI_SOCKET_INTERFACE
235 if (mysql_socket.
m_psi !=
nullptr) {
239 state, mysql_socket.
m_psi, op, byte_count, src_file, src_line);
253 if (locker !=
nullptr) {
266 if (
socket.m_psi !=
nullptr) {
283#ifdef HAVE_PSI_SOCKET_INTERFACE
284#define mysql_socket_socket(K, D, T, P) inline_mysql_socket_socket(K, D, T, P)
286#define mysql_socket_socket(K, D, T, P) inline_mysql_socket_socket(D, T, P)
297#ifdef HAVE_PSI_SOCKET_INTERFACE
298#define mysql_socket_bind(FD, AP, L) \
299 inline_mysql_socket_bind(__FILE__, __LINE__, FD, AP, L)
301#define mysql_socket_bind(FD, AP, L) inline_mysql_socket_bind(FD, AP, L)
312#ifdef HAVE_PSI_SOCKET_INTERFACE
313#define mysql_socket_getsockname(FD, AP, LP) \
314 inline_mysql_socket_getsockname(__FILE__, __LINE__, FD, AP, LP)
316#define mysql_socket_getsockname(FD, AP, LP) \
317 inline_mysql_socket_getsockname(FD, AP, LP)
328#ifdef HAVE_PSI_SOCKET_INTERFACE
329#define mysql_socket_connect(FD, AP, L) \
330 inline_mysql_socket_connect(__FILE__, __LINE__, FD, AP, L)
332#define mysql_socket_connect(FD, AP, L) inline_mysql_socket_connect(FD, AP, L)
343#ifdef HAVE_PSI_SOCKET_INTERFACE
344#define mysql_socket_getpeername(FD, AP, LP) \
345 inline_mysql_socket_getpeername(__FILE__, __LINE__, FD, AP, LP)
347#define mysql_socket_getpeername(FD, AP, LP) \
348 inline_mysql_socket_getpeername(FD, AP, LP)
360#ifdef HAVE_PSI_SOCKET_INTERFACE
361#define mysql_socket_send(FD, B, N, FL) \
362 inline_mysql_socket_send(__FILE__, __LINE__, FD, B, N, FL)
364#define mysql_socket_send(FD, B, N, FL) inline_mysql_socket_send(FD, B, N, FL)
376#ifdef HAVE_PSI_SOCKET_INTERFACE
377#define mysql_socket_recv(FD, B, N, FL) \
378 inline_mysql_socket_recv(__FILE__, __LINE__, FD, B, N, FL)
380#define mysql_socket_recv(FD, B, N, FL) inline_mysql_socket_recv(FD, B, N, FL)
394#ifdef HAVE_PSI_SOCKET_INTERFACE
395#define mysql_socket_sendto(FD, B, N, FL, AP, L) \
396 inline_mysql_socket_sendto(__FILE__, __LINE__, FD, B, N, FL, AP, L)
398#define mysql_socket_sendto(FD, B, N, FL, AP, L) \
399 inline_mysql_socket_sendto(FD, B, N, FL, AP, L)
413#ifdef HAVE_PSI_SOCKET_INTERFACE
414#define mysql_socket_recvfrom(FD, B, N, FL, AP, LP) \
415 inline_mysql_socket_recvfrom(__FILE__, __LINE__, FD, B, N, FL, AP, LP)
417#define mysql_socket_recvfrom(FD, B, N, FL, AP, LP) \
418 inline_mysql_socket_recvfrom(FD, B, N, FL, AP, LP)
431#ifdef HAVE_PSI_SOCKET_INTERFACE
432#define mysql_socket_getsockopt(FD, LV, ON, OP, OL) \
433 inline_mysql_socket_getsockopt(__FILE__, __LINE__, FD, LV, ON, OP, OL)
435#define mysql_socket_getsockopt(FD, LV, ON, OP, OL) \
436 inline_mysql_socket_getsockopt(FD, LV, ON, OP, OL)
449#ifdef HAVE_PSI_SOCKET_INTERFACE
450#define mysql_socket_setsockopt(FD, LV, ON, OP, OL) \
451 inline_mysql_socket_setsockopt(__FILE__, __LINE__, FD, LV, ON, OP, OL)
453#define mysql_socket_setsockopt(FD, LV, ON, OP, OL) \
454 inline_mysql_socket_setsockopt(FD, LV, ON, OP, OL)
462#ifdef HAVE_PSI_SOCKET_INTERFACE
463#define mysql_sock_set_nonblocking(FD) \
464 inline_mysql_sock_set_nonblocking(__FILE__, __LINE__, FD)
466#define mysql_sock_set_nonblocking(FD) inline_mysql_sock_set_nonblocking(FD)
476#ifdef HAVE_PSI_SOCKET_INTERFACE
477#define mysql_socket_listen(FD, N) \
478 inline_mysql_socket_listen(__FILE__, __LINE__, FD, N)
480#define mysql_socket_listen(FD, N) inline_mysql_socket_listen(FD, N)
493#ifdef HAVE_PSI_SOCKET_INTERFACE
494#define mysql_socket_accept(K, FD, AP, LP) \
495 inline_mysql_socket_accept(__FILE__, __LINE__, K, FD, AP, LP)
497#define mysql_socket_accept(K, FD, AP, LP) \
498 inline_mysql_socket_accept(FD, AP, LP)
507#ifdef HAVE_PSI_SOCKET_INTERFACE
508#define mysql_socket_close(FD) inline_mysql_socket_close(__FILE__, __LINE__, FD)
510#define mysql_socket_close(FD) inline_mysql_socket_close(FD)
520#ifdef HAVE_PSI_SOCKET_INTERFACE
521#define mysql_socket_shutdown(FD, H) \
522 inline_mysql_socket_shutdown(__FILE__, __LINE__, FD, H)
524#define mysql_socket_shutdown(FD, H) inline_mysql_socket_shutdown(FD, H)
527#ifdef HAVE_PSI_SOCKET_INTERFACE
541 int domain,
int type,
int protocol) {
545#ifdef HAVE_PSI_SOCKET_INTERFACE
558 const char *src_file, uint src_line,
563#ifdef HAVE_PSI_SOCKET_INTERFACE
564 if (mysql_socket.m_psi !=
nullptr) {
565 if (mysql_socket.m_psi->m_enabled) {
569 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
577 if (locker !=
nullptr) {
583 (mysql_socket.m_psi,
nullptr, addr, len);
594#ifdef HAVE_PSI_SOCKET_INTERFACE
595 if ((mysql_socket.m_psi !=
nullptr) && (
result == 0)) {
596 PSI_SOCKET_CALL(set_socket_info)(mysql_socket.m_psi,
nullptr, addr, len);
607 const char *src_file, uint src_line,
612#ifdef HAVE_PSI_SOCKET_INTERFACE
613 if (mysql_socket.m_psi !=
nullptr) {
614 if (mysql_socket.m_psi->m_enabled) {
618 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
626 if (locker !=
nullptr) {
645 const char *src_file, uint src_line,
650#ifdef HAVE_PSI_SOCKET_INTERFACE
651 if (mysql_socket.m_psi !=
nullptr) {
652 if (mysql_socket.m_psi->m_enabled) {
656 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
664 if (locker !=
nullptr) {
683 const char *src_file, uint src_line,
688#ifdef HAVE_PSI_SOCKET_INTERFACE
689 if (mysql_socket.m_psi !=
nullptr) {
690 if (mysql_socket.m_psi->m_enabled) {
694 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
702 if (locker !=
nullptr) {
721 const char *src_file, uint src_line,
726#ifdef HAVE_PSI_SOCKET_INTERFACE
727 if (mysql_socket.m_psi !=
nullptr) {
728 if (mysql_socket.m_psi->m_enabled) {
739 if (locker !=
nullptr) {
740 size_t bytes_written;
760 const char *src_file, uint src_line,
765#ifdef HAVE_PSI_SOCKET_INTERFACE
766 if (mysql_socket.m_psi !=
nullptr) {
767 if (mysql_socket.m_psi->m_enabled) {
771 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
779 if (locker !=
nullptr) {
800 const char *src_file, uint src_line,
803 const struct sockaddr *addr, socklen_t addr_len) {
806#ifdef HAVE_PSI_SOCKET_INTERFACE
807 if (mysql_socket.m_psi !=
nullptr) {
808 if (mysql_socket.m_psi->m_enabled) {
820 if (locker !=
nullptr) {
821 size_t bytes_written;
833 sendto(mysql_socket.fd,
buf,
IF_WIN((
int), )
n,
flags, addr, addr_len);
842 const char *src_file, uint src_line,
845 struct sockaddr *addr, socklen_t *addr_len) {
848#ifdef HAVE_PSI_SOCKET_INTERFACE
849 if (mysql_socket.m_psi !=
nullptr) {
850 if (mysql_socket.m_psi->m_enabled) {
854 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
863 if (locker !=
nullptr) {
876 recvfrom(mysql_socket.fd,
buf,
IF_WIN((
int), )
n,
flags, addr, addr_len);
885 const char *src_file, uint src_line,
891#ifdef HAVE_PSI_SOCKET_INTERFACE
892 if (mysql_socket.m_psi !=
nullptr) {
893 if (mysql_socket.m_psi->m_enabled) {
897 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
905 if (locker !=
nullptr) {
924 const char *src_file, uint src_line,
930#ifdef HAVE_PSI_SOCKET_INTERFACE
931 if (mysql_socket.m_psi !=
nullptr) {
932 if (mysql_socket.m_psi->m_enabled) {
936 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
944 if (locker !=
nullptr) {
965 ret = ioctlsocket(fd, FIONBIO, &nonblocking);
970 fd_flags =
fcntl(fd, F_GETFL, 0);
974#if defined(O_NONBLOCK)
975 fd_flags |= O_NONBLOCK;
976#elif defined(O_NDELAY)
977 fd_flags |= O_NDELAY;
978#elif defined(O_FNDELAY)
979 fd_flags |= O_FNDELAY;
981#error "No definition of non-blocking flag found."
983 if (
fcntl(fd, F_SETFL, fd_flags) == -1) {
995 const char *src_file, uint src_line,
1000#ifdef HAVE_PSI_SOCKET_INTERFACE
1001 if (mysql_socket.m_psi !=
nullptr) {
1002 if (mysql_socket.m_psi->m_enabled) {
1006 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
1008 src_file, src_line);
1014 if (locker !=
nullptr) {
1033 const char *src_file, uint src_line,
1038#ifdef HAVE_PSI_SOCKET_INTERFACE
1039 if (mysql_socket.m_psi !=
nullptr) {
1040 if (mysql_socket.m_psi->m_enabled) {
1044 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
1046 src_file, src_line);
1052 if (locker !=
nullptr) {
1075 socklen_t addr_length = (addr_len !=
nullptr) ? *addr_len : 0;
1077#ifdef HAVE_PSI_SOCKET_INTERFACE
1078 if (socket_listen.m_psi !=
nullptr) {
1079 if (socket_listen.m_psi->m_enabled) {
1083 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, socket_listen.m_psi,
1085 src_file, src_line);
1088 socket_accept.
fd =
accept(socket_listen.fd, addr, &addr_length);
1091 if (locker !=
nullptr) {
1102 return socket_accept;
1108 socket_accept.
fd =
accept(socket_listen.fd, addr, &addr_length);
1110#ifdef HAVE_PSI_SOCKET_INTERFACE
1118 return socket_accept;
1125 const char *src_file, uint src_line,
1130#ifdef HAVE_PSI_SOCKET_INTERFACE
1131 if (mysql_socket.m_psi !=
nullptr) {
1132 if (mysql_socket.m_psi->m_enabled) {
1136 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
1138 src_file, src_line);
1144 if (locker !=
nullptr) {
1159#ifdef HAVE_PSI_SOCKET_INTERFACE
1161 if (mysql_socket.m_psi !=
nullptr) {
1173 const char *src_file, uint src_line,
1179 static LPFN_DISCONNECTEX DisconnectEx =
nullptr;
1180 if (DisconnectEx ==
nullptr) {
1181 DWORD dwBytesReturned;
1182 GUID guidDisconnectEx = WSAID_DISCONNECTEX;
1183 WSAIoctl(mysql_socket.fd, SIO_GET_EXTENSION_FUNCTION_POINTER,
1184 &guidDisconnectEx,
sizeof(GUID), &DisconnectEx,
1185 sizeof(DisconnectEx), &dwBytesReturned,
nullptr,
nullptr);
1190#ifdef HAVE_PSI_SOCKET_INTERFACE
1191 if (mysql_socket.m_psi !=
nullptr) {
1192 if (mysql_socket.m_psi->m_enabled) {
1202 result = (DisconnectEx(mysql_socket.fd, (LPOVERLAPPED)
nullptr,
1203 (DWORD)0, (DWORD)0) ==
TRUE)
1211 if (locker !=
nullptr) {
1223 result = (DisconnectEx(mysql_socket.fd, (LPOVERLAPPED)
nullptr, (DWORD)0,
#define PSI_SOCKET_CALL(M)
Definition: psi_socket.h:36
mysql_service_status_t recv(const char *tag, const unsigned char *data, size_t data_length) noexcept
Definition: gr_message_service_example.cc:39
PSI_socket_operation
Operation performed on an instrumented socket.
Definition: psi_socket_bits.h:89
struct PSI_socket_locker PSI_socket_locker
Definition: psi_socket_bits.h:77
PSI_socket_state
State of an instrumented socket.
Definition: psi_socket_bits.h:80
unsigned int PSI_socket_key
Instrumented socket key.
Definition: psi_socket_bits.h:49
@ PSI_SOCKET_CLOSE
Socket close, as in shutdown().
Definition: psi_socket_bits.h:97
@ PSI_SOCKET_SEND
Socket send, send().
Definition: psi_socket_bits.h:99
@ PSI_SOCKET_RECV
Socket receive, recv().
Definition: psi_socket_bits.h:101
@ PSI_SOCKET_BIND
Socket bind, as in bind(), getsockname() and getpeername().
Definition: psi_socket_bits.h:95
@ PSI_SOCKET_CONNECT
Socket connection, as in connect(), listen() and accept().
Definition: psi_socket_bits.h:93
@ PSI_SOCKET_SHUTDOWN
Socket shutdown, as in shutdown().
Definition: psi_socket_bits.h:117
@ PSI_SOCKET_OPT
Socket options, as in getsockopt() and setsockopt().
Definition: psi_socket_bits.h:113
static int inline_mysql_socket_getsockopt(const char *src_file, uint src_line, MYSQL_SOCKET mysql_socket, int level, int optname, SOCKBUF_T *optval, socklen_t *optlen)
mysql_socket_getsockopt
Definition: mysql_socket.h:883
static void inline_mysql_end_socket_wait(struct PSI_socket_locker *locker, size_t byte_count)
Instrumentation calls for MYSQL_END_SOCKET_WAIT.
Definition: mysql_socket.h:251
static ssize_t inline_mysql_socket_sendto(const char *src_file, uint src_line, MYSQL_SOCKET mysql_socket, const SOCKBUF_T *buf, size_t n, int flags, const struct sockaddr *addr, socklen_t addr_len)
mysql_socket_sendto
Definition: mysql_socket.h:798
static int inline_mysql_socket_getpeername(const char *src_file, uint src_line, MYSQL_SOCKET mysql_socket, struct sockaddr *addr, socklen_t *len)
mysql_socket_getpeername
Definition: mysql_socket.h:681
static int inline_mysql_socket_bind(const char *src_file, uint src_line, MYSQL_SOCKET mysql_socket, const struct sockaddr *addr, socklen_t len)
mysql_socket_bind
Definition: mysql_socket.h:556
static int inline_mysql_socket_setsockopt(const char *src_file, uint src_line, MYSQL_SOCKET mysql_socket, int level, int optname, const SOCKBUF_T *optval, socklen_t optlen)
mysql_socket_setsockopt
Definition: mysql_socket.h:922
static struct PSI_socket_locker * inline_mysql_start_socket_wait(PSI_socket_locker_state *state, MYSQL_SOCKET mysql_socket, enum PSI_socket_operation op, size_t byte_count, const char *src_file, int src_line)
Instrumentation calls for MYSQL_START_SOCKET_WAIT.
Definition: mysql_socket.h:231
static int inline_mysql_sock_set_nonblocking(const char *src_file, uint src_line, MYSQL_SOCKET mysql_socket)
mysql_socket_set_nonblocking
Definition: mysql_socket.h:993
static void inline_mysql_socket_register(const char *category, PSI_socket_info *info, int count)
Definition: mysql_socket.h:528
static ssize_t inline_mysql_socket_recv(const char *src_file, uint src_line, MYSQL_SOCKET mysql_socket, SOCKBUF_T *buf, size_t n, int flags)
mysql_socket_recv
Definition: mysql_socket.h:758
static MYSQL_SOCKET inline_mysql_socket_socket(PSI_socket_key key, int domain, int type, int protocol)
mysql_socket_socket
Definition: mysql_socket.h:537
static int inline_mysql_socket_shutdown(const char *src_file, uint src_line, MYSQL_SOCKET mysql_socket, int how)
mysql_socket_shutdown
Definition: mysql_socket.h:1171
static void mysql_socket_setfd(MYSQL_SOCKET *mysql_socket, my_socket fd)
MYSQL_SOCKET helper.
Definition: mysql_socket.h:147
static int set_socket_nonblock(my_socket fd)
set_socket_nonblock
Definition: mysql_socket.h:960
static MYSQL_SOCKET inline_mysql_socket_accept(const char *src_file, uint src_line, PSI_socket_key key, MYSQL_SOCKET socket_listen, struct sockaddr *addr, socklen_t *addr_len)
mysql_socket_accept
Definition: mysql_socket.h:1069
static void mysql_socket_set_thread_owner(MYSQL_SOCKET socket)
Assign the current thread instrumentation to the socket.
Definition: mysql_socket.h:117
static ssize_t inline_mysql_socket_send(const char *src_file, uint src_line, MYSQL_SOCKET mysql_socket, const SOCKBUF_T *buf, size_t n, int flags)
mysql_socket_send
Definition: mysql_socket.h:719
static void inline_mysql_socket_set_state(MYSQL_SOCKET socket, enum PSI_socket_state state)
Set the state (IDLE, ACTIVE) of an instrumented socket.
Definition: mysql_socket.h:264
static ssize_t inline_mysql_socket_recvfrom(const char *src_file, uint src_line, MYSQL_SOCKET mysql_socket, SOCKBUF_T *buf, size_t n, int flags, struct sockaddr *addr, socklen_t *addr_len)
mysql_socket_recvfrom
Definition: mysql_socket.h:840
static void mysql_socket_set_address(MYSQL_SOCKET socket, const struct sockaddr *addr, socklen_t addr_len)
Set socket descriptor and address.
Definition: mysql_socket.h:96
static int inline_mysql_socket_getsockname(const char *src_file, uint src_line, MYSQL_SOCKET mysql_socket, struct sockaddr *addr, socklen_t *len)
mysql_socket_getsockname
Definition: mysql_socket.h:605
static int inline_mysql_socket_connect(const char *src_file, uint src_line, MYSQL_SOCKET mysql_socket, const struct sockaddr *addr, socklen_t len)
mysql_socket_connect
Definition: mysql_socket.h:643
static int inline_mysql_socket_close(const char *src_file, uint src_line, MYSQL_SOCKET mysql_socket)
mysql_socket_close
Definition: mysql_socket.h:1123
static my_socket mysql_socket_getfd(MYSQL_SOCKET mysql_socket)
MYSQL_SOCKET helper.
Definition: mysql_socket.h:137
static int inline_mysql_socket_listen(const char *src_file, uint src_line, MYSQL_SOCKET mysql_socket, int backlog)
mysql_socket_listen
Definition: mysql_socket.h:1031
static int flags[50]
Definition: hp_test1.cc:40
mysql_service_status_t send(const char *tag, const unsigned char *data, const size_t data_length) noexcept
Definition: message_service.cc:33
Header for compiler-dependent features.
constexpr bool likely(bool expr)
Definition: my_compiler.h:57
Common #defines and includes for file and socket I/O.
#define INVALID_SOCKET
Definition: my_io.h:190
#define closesocket(A)
Definition: my_io.h:178
#define IF_WIN(A, B)
Definition: my_macros.h:38
Defines various enable/disable and HAVE_ macros related to the performance schema instrumentation sys...
#define HAVE_PSI_SOCKET_INTERFACE
Definition: my_psi_config.h:198
static int count
Definition: myisam_ftdump.cc:45
int my_socket
Definition: mysql.h:65
#define SOCKBUF_T
Definition: mysql_socket.h:55
#define MYSQL_INVALID_SOCKET
MYSQL_SOCKET initial value.
Definition: mysql_socket_bits.h:52
Definition: buf0block_hint.cc:30
MYSQL_STRINGS_EXPORT void shutdown()
Shutdown character set/collation library.
Definition: collations.cc:105
stdx::expected< int, std::error_code > fcntl(file_handle_type fd, const FileControlOption &cmd)
Definition: file.h:125
stdx::expected< void, error_type > listen(native_handle_type native_handle, int backlog)
Definition: socket.h:149
stdx::expected< void, error_type > getsockname(native_handle_type native_handle, struct sockaddr *addr, size_t *addr_len)
Definition: socket.h:402
stdx::expected< native_handle_type, error_type > socket(int family, int sock_type, int protocol)
Definition: socket.h:63
stdx::expected< void, error_type > bind(native_handle_type native_handle, const struct sockaddr *addr, size_t addr_len)
wrap bind() in a portable way.
Definition: socket.h:339
stdx::expected< void, error_type > getpeername(native_handle_type native_handle, struct sockaddr *addr, size_t *addr_len)
Definition: socket.h:423
stdx::expected< native_handle_type, error_type > accept(native_handle_type native_handle, struct sockaddr *addr, socklen_t *addr_len)
wrap accept() in a portable way.
Definition: socket.h:367
stdx::expected< void, error_type > setsockopt(native_handle_type native_handle, int level, int optname, const void *optval, socklen_t optlen)
Definition: socket.h:158
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
stdx::expected< void, error_type > getsockopt(native_handle_type native_handle, int level, int optname, void *optval, socklen_t *optlen)
Definition: socket.h:174
static const char * category
Definition: sha2_password.cc:170
Performance schema instrumentation (declarations).
struct result result
Definition: result.h:34
Performance schema instrumentation interface.
required string key
Definition: replication_asynchronous_connection_failover.proto:60
required string type
Definition: replication_group_member_actions.proto:34
struct sockaddr sockaddr
Definition: sock_probe_win32.h:63
An instrumented socket.
Definition: mysql_socket_bits.h:35
struct PSI_socket * m_psi
The instrumentation hook.
Definition: mysql_socket_bits.h:44
my_socket fd
The real socket descriptor.
Definition: mysql_socket_bits.h:37
bool m_enabled
Instrumentation is enabled.
Definition: psi_bits.h:191
Socket instrument information.
Definition: psi_socket_bits.h:128
State data storage for start_socket_wait_v1_t.
Definition: psi_socket_bits.h:158
__u_long u_long
Definition: types.h:74
#define TRUE
Definition: types.h:51
int n
Definition: xcom_base.cc:509