46#ifdef WIN32_LEAN_AND_MEAN
52#include <netinet/in.h>
60#if defined(MYSQL_SERVER) || defined(PFS_DIRECT_CALL)
65#ifndef PSI_SOCKET_CALL
66#define PSI_SOCKET_CALL(M) psi_socket_service->M
79#ifdef HAVE_PSI_SOCKET_INTERFACE
80#define mysql_socket_register(P1, P2, P3) \
81 inline_mysql_socket_register(P1, P2, P3)
83#define mysql_socket_register(P1, P2, P3) \
100 const struct sockaddr *addr [[maybe_unused]],
101 socklen_t addr_len [[maybe_unused]]
104#ifdef HAVE_PSI_SOCKET_INTERFACE
105 if (
socket.m_psi !=
nullptr) {
123#ifdef HAVE_PSI_SOCKET_INTERFACE
124 if (
socket.m_psi !=
nullptr) {
137 return mysql_socket.
fd;
148 if (
likely(mysql_socket !=
nullptr)) {
149 mysql_socket->
fd = fd;
163#ifdef HAVE_PSI_SOCKET_INTERFACE
164#define MYSQL_SOCKET_WAIT_VARIABLES(LOCKER, STATE) \
165 struct PSI_socket_locker *LOCKER; \
166 PSI_socket_locker_state STATE;
168#define MYSQL_SOCKET_WAIT_VARIABLES(LOCKER, STATE)
182#ifdef HAVE_PSI_SOCKET_INTERFACE
183#define MYSQL_START_SOCKET_WAIT(LOCKER, STATE, SOCKET, OP, COUNT) \
184 LOCKER = inline_mysql_start_socket_wait(STATE, SOCKET, OP, COUNT, __FILE__, \
187#define MYSQL_START_SOCKET_WAIT(LOCKER, STATE, SOCKET, OP, COUNT) \
200#ifdef HAVE_PSI_SOCKET_INTERFACE
201#define MYSQL_END_SOCKET_WAIT(LOCKER, COUNT) \
202 inline_mysql_end_socket_wait(LOCKER, COUNT)
204#define MYSQL_END_SOCKET_WAIT(LOCKER, COUNT) \
216#ifdef HAVE_PSI_SOCKET_INTERFACE
217#define MYSQL_SOCKET_SET_STATE(SOCKET, STATE) \
218 inline_mysql_socket_set_state(SOCKET, STATE)
220#define MYSQL_SOCKET_SET_STATE(SOCKET, STATE) \
225#ifdef HAVE_PSI_SOCKET_INTERFACE
234 if (mysql_socket.
m_psi !=
nullptr) {
238 state, mysql_socket.
m_psi, op, byte_count, src_file, src_line);
252 if (locker !=
nullptr) {
265 if (
socket.m_psi !=
nullptr) {
282#ifdef HAVE_PSI_SOCKET_INTERFACE
283#define mysql_socket_socket(K, D, T, P) inline_mysql_socket_socket(K, D, T, P)
285#define mysql_socket_socket(K, D, T, P) inline_mysql_socket_socket(D, T, P)
296#ifdef HAVE_PSI_SOCKET_INTERFACE
297#define mysql_socket_bind(FD, AP, L) \
298 inline_mysql_socket_bind(__FILE__, __LINE__, FD, AP, L)
300#define mysql_socket_bind(FD, AP, L) inline_mysql_socket_bind(FD, AP, L)
311#ifdef HAVE_PSI_SOCKET_INTERFACE
312#define mysql_socket_getsockname(FD, AP, LP) \
313 inline_mysql_socket_getsockname(__FILE__, __LINE__, FD, AP, LP)
315#define mysql_socket_getsockname(FD, AP, LP) \
316 inline_mysql_socket_getsockname(FD, AP, LP)
327#ifdef HAVE_PSI_SOCKET_INTERFACE
328#define mysql_socket_connect(FD, AP, L) \
329 inline_mysql_socket_connect(__FILE__, __LINE__, FD, AP, L)
331#define mysql_socket_connect(FD, AP, L) inline_mysql_socket_connect(FD, AP, L)
342#ifdef HAVE_PSI_SOCKET_INTERFACE
343#define mysql_socket_getpeername(FD, AP, LP) \
344 inline_mysql_socket_getpeername(__FILE__, __LINE__, FD, AP, LP)
346#define mysql_socket_getpeername(FD, AP, LP) \
347 inline_mysql_socket_getpeername(FD, AP, LP)
359#ifdef HAVE_PSI_SOCKET_INTERFACE
360#define mysql_socket_send(FD, B, N, FL) \
361 inline_mysql_socket_send(__FILE__, __LINE__, FD, B, N, FL)
363#define mysql_socket_send(FD, B, N, FL) inline_mysql_socket_send(FD, B, N, FL)
375#ifdef HAVE_PSI_SOCKET_INTERFACE
376#define mysql_socket_recv(FD, B, N, FL) \
377 inline_mysql_socket_recv(__FILE__, __LINE__, FD, B, N, FL)
379#define mysql_socket_recv(FD, B, N, FL) inline_mysql_socket_recv(FD, B, N, FL)
393#ifdef HAVE_PSI_SOCKET_INTERFACE
394#define mysql_socket_sendto(FD, B, N, FL, AP, L) \
395 inline_mysql_socket_sendto(__FILE__, __LINE__, FD, B, N, FL, AP, L)
397#define mysql_socket_sendto(FD, B, N, FL, AP, L) \
398 inline_mysql_socket_sendto(FD, B, N, FL, AP, L)
412#ifdef HAVE_PSI_SOCKET_INTERFACE
413#define mysql_socket_recvfrom(FD, B, N, FL, AP, LP) \
414 inline_mysql_socket_recvfrom(__FILE__, __LINE__, FD, B, N, FL, AP, LP)
416#define mysql_socket_recvfrom(FD, B, N, FL, AP, LP) \
417 inline_mysql_socket_recvfrom(FD, B, N, FL, AP, LP)
430#ifdef HAVE_PSI_SOCKET_INTERFACE
431#define mysql_socket_getsockopt(FD, LV, ON, OP, OL) \
432 inline_mysql_socket_getsockopt(__FILE__, __LINE__, FD, LV, ON, OP, OL)
434#define mysql_socket_getsockopt(FD, LV, ON, OP, OL) \
435 inline_mysql_socket_getsockopt(FD, LV, ON, OP, OL)
448#ifdef HAVE_PSI_SOCKET_INTERFACE
449#define mysql_socket_setsockopt(FD, LV, ON, OP, OL) \
450 inline_mysql_socket_setsockopt(__FILE__, __LINE__, FD, LV, ON, OP, OL)
452#define mysql_socket_setsockopt(FD, LV, ON, OP, OL) \
453 inline_mysql_socket_setsockopt(FD, LV, ON, OP, OL)
461#ifdef HAVE_PSI_SOCKET_INTERFACE
462#define mysql_sock_set_nonblocking(FD) \
463 inline_mysql_sock_set_nonblocking(__FILE__, __LINE__, FD)
465#define mysql_sock_set_nonblocking(FD) inline_mysql_sock_set_nonblocking(FD)
475#ifdef HAVE_PSI_SOCKET_INTERFACE
476#define mysql_socket_listen(FD, N) \
477 inline_mysql_socket_listen(__FILE__, __LINE__, FD, N)
479#define mysql_socket_listen(FD, N) inline_mysql_socket_listen(FD, N)
492#ifdef HAVE_PSI_SOCKET_INTERFACE
493#define mysql_socket_accept(K, FD, AP, LP) \
494 inline_mysql_socket_accept(__FILE__, __LINE__, K, FD, AP, LP)
496#define mysql_socket_accept(K, FD, AP, LP) \
497 inline_mysql_socket_accept(FD, AP, LP)
506#ifdef HAVE_PSI_SOCKET_INTERFACE
507#define mysql_socket_close(FD) inline_mysql_socket_close(__FILE__, __LINE__, FD)
509#define mysql_socket_close(FD) inline_mysql_socket_close(FD)
519#ifdef HAVE_PSI_SOCKET_INTERFACE
520#define mysql_socket_shutdown(FD, H) \
521 inline_mysql_socket_shutdown(__FILE__, __LINE__, FD, H)
523#define mysql_socket_shutdown(FD, H) inline_mysql_socket_shutdown(FD, H)
526#ifdef HAVE_PSI_SOCKET_INTERFACE
540 int domain,
int type,
int protocol) {
544#ifdef HAVE_PSI_SOCKET_INTERFACE
557 const char *src_file,
uint src_line,
562#ifdef HAVE_PSI_SOCKET_INTERFACE
563 if (mysql_socket.m_psi !=
nullptr) {
564 if (mysql_socket.m_psi->m_enabled) {
568 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
576 if (locker !=
nullptr) {
582 (mysql_socket.m_psi,
nullptr, addr, len);
593#ifdef HAVE_PSI_SOCKET_INTERFACE
594 if ((mysql_socket.m_psi !=
nullptr) && (
result == 0)) {
595 PSI_SOCKET_CALL(set_socket_info)(mysql_socket.m_psi,
nullptr, addr, len);
606 const char *src_file,
uint src_line,
611#ifdef HAVE_PSI_SOCKET_INTERFACE
612 if (mysql_socket.m_psi !=
nullptr) {
613 if (mysql_socket.m_psi->m_enabled) {
617 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
625 if (locker !=
nullptr) {
644 const char *src_file,
uint src_line,
649#ifdef HAVE_PSI_SOCKET_INTERFACE
650 if (mysql_socket.m_psi !=
nullptr) {
651 if (mysql_socket.m_psi->m_enabled) {
655 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
663 if (locker !=
nullptr) {
682 const char *src_file,
uint src_line,
687#ifdef HAVE_PSI_SOCKET_INTERFACE
688 if (mysql_socket.m_psi !=
nullptr) {
689 if (mysql_socket.m_psi->m_enabled) {
693 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
701 if (locker !=
nullptr) {
720 const char *src_file,
uint src_line,
725#ifdef HAVE_PSI_SOCKET_INTERFACE
726 if (mysql_socket.m_psi !=
nullptr) {
727 if (mysql_socket.m_psi->m_enabled) {
738 if (locker !=
nullptr) {
739 size_t bytes_written;
759 const char *src_file,
uint src_line,
764#ifdef HAVE_PSI_SOCKET_INTERFACE
765 if (mysql_socket.m_psi !=
nullptr) {
766 if (mysql_socket.m_psi->m_enabled) {
770 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
778 if (locker !=
nullptr) {
799 const char *src_file,
uint src_line,
802 const struct sockaddr *addr, socklen_t addr_len) {
805#ifdef HAVE_PSI_SOCKET_INTERFACE
806 if (mysql_socket.m_psi !=
nullptr) {
807 if (mysql_socket.m_psi->m_enabled) {
819 if (locker !=
nullptr) {
820 size_t bytes_written;
832 sendto(mysql_socket.fd,
buf,
IF_WIN((
int), )
n,
flags, addr, addr_len);
841 const char *src_file,
uint src_line,
844 struct sockaddr *addr, socklen_t *addr_len) {
847#ifdef HAVE_PSI_SOCKET_INTERFACE
848 if (mysql_socket.m_psi !=
nullptr) {
849 if (mysql_socket.m_psi->m_enabled) {
853 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
862 if (locker !=
nullptr) {
875 recvfrom(mysql_socket.fd,
buf,
IF_WIN((
int), )
n,
flags, addr, addr_len);
884 const char *src_file,
uint src_line,
890#ifdef HAVE_PSI_SOCKET_INTERFACE
891 if (mysql_socket.m_psi !=
nullptr) {
892 if (mysql_socket.m_psi->m_enabled) {
896 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
904 if (locker !=
nullptr) {
923 const char *src_file,
uint src_line,
929#ifdef HAVE_PSI_SOCKET_INTERFACE
930 if (mysql_socket.m_psi !=
nullptr) {
931 if (mysql_socket.m_psi->m_enabled) {
935 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
943 if (locker !=
nullptr) {
964 ret = ioctlsocket(fd, FIONBIO, &nonblocking);
969 fd_flags =
fcntl(fd, F_GETFL, 0);
973#if defined(O_NONBLOCK)
974 fd_flags |= O_NONBLOCK;
975#elif defined(O_NDELAY)
976 fd_flags |= O_NDELAY;
977#elif defined(O_FNDELAY)
978 fd_flags |= O_FNDELAY;
980#error "No definition of non-blocking flag found."
982 if (
fcntl(fd, F_SETFL, fd_flags) == -1) {
994 const char *src_file,
uint src_line,
999#ifdef HAVE_PSI_SOCKET_INTERFACE
1000 if (mysql_socket.m_psi !=
nullptr) {
1001 if (mysql_socket.m_psi->m_enabled) {
1005 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
1007 src_file, src_line);
1013 if (locker !=
nullptr) {
1032 const char *src_file,
uint src_line,
1037#ifdef HAVE_PSI_SOCKET_INTERFACE
1038 if (mysql_socket.m_psi !=
nullptr) {
1039 if (mysql_socket.m_psi->m_enabled) {
1043 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
1045 src_file, src_line);
1051 if (locker !=
nullptr) {
1074 socklen_t addr_length = (addr_len !=
nullptr) ? *addr_len : 0;
1076#ifdef HAVE_PSI_SOCKET_INTERFACE
1077 if (socket_listen.m_psi !=
nullptr) {
1078 if (socket_listen.m_psi->m_enabled) {
1082 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, socket_listen.m_psi,
1084 src_file, src_line);
1087 socket_accept.
fd =
accept(socket_listen.fd, addr, &addr_length);
1090 if (locker !=
nullptr) {
1101 return socket_accept;
1107 socket_accept.
fd =
accept(socket_listen.fd, addr, &addr_length);
1109#ifdef HAVE_PSI_SOCKET_INTERFACE
1117 return socket_accept;
1124 const char *src_file,
uint src_line,
1129#ifdef HAVE_PSI_SOCKET_INTERFACE
1130 if (mysql_socket.m_psi !=
nullptr) {
1131 if (mysql_socket.m_psi->m_enabled) {
1135 locker =
PSI_SOCKET_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
1137 src_file, src_line);
1143 if (locker !=
nullptr) {
1158#ifdef HAVE_PSI_SOCKET_INTERFACE
1160 if (mysql_socket.m_psi !=
nullptr) {
1172 const char *src_file,
uint src_line,
1178 static LPFN_DISCONNECTEX DisconnectEx =
NULL;
1179 if (DisconnectEx ==
NULL) {
1180 DWORD dwBytesReturned;
1181 GUID guidDisconnectEx = WSAID_DISCONNECTEX;
1182 WSAIoctl(mysql_socket.fd, SIO_GET_EXTENSION_FUNCTION_POINTER,
1183 &guidDisconnectEx,
sizeof(GUID), &DisconnectEx,
1184 sizeof(DisconnectEx), &dwBytesReturned,
NULL,
NULL);
1189#ifdef HAVE_PSI_SOCKET_INTERFACE
1190 if (mysql_socket.m_psi !=
nullptr) {
1191 if (mysql_socket.m_psi->m_enabled) {
1201 result = (DisconnectEx(mysql_socket.fd, (LPOVERLAPPED)
NULL, (DWORD)0,
1210 if (locker !=
nullptr) {
1222 result = (DisconnectEx(mysql_socket.fd, (LPOVERLAPPED)
NULL, (DWORD)0,
#define PSI_SOCKET_CALL(M)
Definition: psi_socket.h:35
mysql_service_status_t recv(const char *tag, const unsigned char *data, size_t data_length) noexcept
Definition: gr_message_service_example.cc:38
PSI_socket_operation
Operation performed on an instrumented socket.
Definition: psi_socket_bits.h:88
struct PSI_socket_locker PSI_socket_locker
Definition: psi_socket_bits.h:76
PSI_socket_state
State of an instrumented socket.
Definition: psi_socket_bits.h:79
unsigned int PSI_socket_key
Instrumented socket key.
Definition: psi_socket_bits.h:48
@ PSI_SOCKET_CLOSE
Socket close, as in shutdown().
Definition: psi_socket_bits.h:96
@ PSI_SOCKET_SEND
Socket send, send().
Definition: psi_socket_bits.h:98
@ PSI_SOCKET_RECV
Socket receive, recv().
Definition: psi_socket_bits.h:100
@ PSI_SOCKET_BIND
Socket bind, as in bind(), getsockname() and getpeername().
Definition: psi_socket_bits.h:94
@ PSI_SOCKET_CONNECT
Socket connection, as in connect(), listen() and accept().
Definition: psi_socket_bits.h:92
@ PSI_SOCKET_SHUTDOWN
Socket shutdown, as in shutdown().
Definition: psi_socket_bits.h:116
@ PSI_SOCKET_OPT
Socket options, as in getsockopt() and setsockopt().
Definition: psi_socket_bits.h:112
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:882
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:250
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:797
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:680
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:555
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:921
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:230
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:992
static void inline_mysql_socket_register(const char *category, PSI_socket_info *info, int count)
Definition: mysql_socket.h:527
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:757
static MYSQL_SOCKET inline_mysql_socket_socket(PSI_socket_key key, int domain, int type, int protocol)
mysql_socket_socket
Definition: mysql_socket.h:536
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:1170
static void mysql_socket_setfd(MYSQL_SOCKET *mysql_socket, my_socket fd)
MYSQL_SOCKET helper.
Definition: mysql_socket.h:146
static int set_socket_nonblock(my_socket fd)
set_socket_nonblock
Definition: mysql_socket.h:959
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:1068
static void mysql_socket_set_thread_owner(MYSQL_SOCKET socket)
Assign the current thread instrumentation to the socket.
Definition: mysql_socket.h:116
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:718
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:263
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:839
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:95
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:604
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:642
static int inline_mysql_socket_close(const char *src_file, uint src_line, MYSQL_SOCKET mysql_socket)
mysql_socket_close
Definition: mysql_socket.h:1122
static my_socket mysql_socket_getfd(MYSQL_SOCKET mysql_socket)
MYSQL_SOCKET helper.
Definition: mysql_socket.h:136
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:1030
static int flags[50]
Definition: hp_test1.cc:39
mysql_service_status_t send(const char *tag, const unsigned char *data, const size_t data_length) noexcept
Definition: message_service.cc:31
Header for compiler-dependent features.
constexpr bool likely(bool expr)
Definition: my_compiler.h:54
Common #defines and includes for file and socket I/O.
#define INVALID_SOCKET
Definition: my_io.h:189
#define closesocket(A)
Definition: my_io.h:177
#define IF_WIN(A, B)
Definition: my_macros.h:37
Defines various enable/disable and HAVE_ macros related to the performance schema instrumentation sys...
#define HAVE_PSI_SOCKET_INTERFACE
Definition: my_psi_config.h:196
static int count
Definition: myisam_ftdump.cc:42
int my_socket
Definition: mysql.h:64
#define SOCKBUF_T
Definition: mysql_socket.h:54
#define MYSQL_INVALID_SOCKET
MYSQL_SOCKET initial value.
Definition: mysql_socket_bits.h:51
Definition: buf0block_hint.cc:29
stdx::expected< int, std::error_code > fcntl(file_handle_type fd, const FileControlOption &cmd)
Definition: file.h:124
stdx::expected< void, error_type > listen(native_handle_type native_handle, int backlog)
Definition: socket.h:148
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:62
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:338
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:366
stdx::expected< void, error_type > setsockopt(native_handle_type native_handle, int level, int optname, const void *optval, socklen_t optlen)
Definition: socket.h:157
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:352
stdx::expected< void, error_type > shutdown(native_handle_type fd, int how)
Definition: socket.h:662
stdx::expected< void, error_type > getsockopt(native_handle_type native_handle, int level, int optname, void *optval, socklen_t *optlen)
Definition: socket.h:173
static const char * category
Definition: sha2_password.cc:169
Performance schema instrumentation (declarations).
struct result result
Definition: result.h:33
Performance schema instrumentation interface.
required string key
Definition: replication_asynchronous_connection_failover.proto:59
required string type
Definition: replication_group_member_actions.proto:33
struct sockaddr sockaddr
Definition: sock_probe_win32.h:62
An instrumented socket.
Definition: mysql_socket_bits.h:34
struct PSI_socket * m_psi
The instrumentation hook.
Definition: mysql_socket_bits.h:43
my_socket fd
The real socket descriptor.
Definition: mysql_socket_bits.h:36
bool m_enabled
Instrumentation is enabled.
Definition: psi_bits.h:180
Socket instrument information.
Definition: psi_socket_bits.h:127
State data storage for start_socket_wait_v1_t.
Definition: psi_socket_bits.h:157
#define NULL
Definition: types.h:54
__u_long u_long
Definition: types.h:73
#define TRUE
Definition: types.h:50
unsigned int uint
Definition: uca9-dump.cc:74
int n
Definition: xcom_base.cc:508