YoushouldhavereceivedacopyoftheGNUGeneralPublicLicense alongwiththisprogram;ifnot,writetotheFreeSoftwareFoundation,Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */
void vio_delete(Vio* vio); int vio_close(Vio* vio);
my_bool vio_reset(Vio* vio, enum enum_vio_type type,
my_socket sd, void *ssl, uint flags);
size_t vio_read(Vio *vio, uchar * buf, size_t size);
size_t vio_read_buff(Vio *vio, uchar * buf, size_t size);
size_t vio_write(Vio *vio, const uchar * buf, size_t size); int vio_blocking(Vio *vio, my_bool onoff, my_bool *old_mode);
my_bool vio_is_blocking(Vio *vio); /* setsockopt TCP_NODELAY at IPPROTO_TCP level, when possible */ int vio_nodelay(Vio *vio, my_bool on); int vio_fastsend(Vio *vio); /* setsockopt SO_KEEPALIVE at SOL_SOCKET level, when possible */ int vio_keepalive(Vio *vio, my_bool onoff); int vio_set_keepalive_options(Vio * vio, conststruct vio_keepalive_opts *opts); /* Whenever we should retry the last read/write operation. */
my_bool vio_should_retry(Vio *vio); /* Check that operation was timed out */
my_bool vio_was_timeout(Vio *vio); /* Short text description of the socket for those, who are curious.. */ constchar* vio_description(Vio *vio); /* Return the type of the connection */ enum enum_vio_type vio_type(Vio* vio); /* Return last error number */ int vio_errno(Vio*vio); /* Get socket number */
my_socket vio_fd(Vio*vio); /* Remote peer's address and name in text form */
my_bool vio_peer_addr(Vio *vio, char *buf, uint16 *port, size_t buflen); /* Wait for an I/O event notification. */ int vio_io_wait(Vio *vio, enum enum_vio_io_event event, int timeout);
my_bool vio_is_connected(Vio *vio);
ssize_t vio_pending(Vio *vio); /* Set timeout for a network operation. */ externint vio_timeout(Vio *vio, uint which, int timeout_sec); externvoid vio_set_wait_callback(void (*before_wait)(void), void (*after_wait)(void)); /* Connect to a peer. */
my_bool vio_socket_connect(Vio *vio, struct sockaddr *addr, socklen_t len, int timeout);
int vio_getnameinfo(conststruct sockaddr *sa, char *hostname, size_t hostname_size, char *port, size_t port_size, int flags);
#ifdef HAVE_OPENSSL #define HEADER_DES_LOCL_H dummy_something #define YASSL_MYSQL_COMPATIBLE #ifndef YASSL_PREFIX #define YASSL_PREFIX #endif /* Set yaSSL to use same type as MySQL do for socket handles */ typedef my_socket YASSL_SOCKET_T; #define YASSL_SOCKET_T_DEFINED #definetemplate _template/* bug in WolfSSL 4.4.0, see also my_crypt.cc */ #include <openssl/ssl.h> #undeftemplate #include <openssl/err.h> #ifdef DEPRECATED #undef DEPRECATED #endif
int sslaccept(struct st_VioSSLFd*, Vio *, long timeout, unsignedlong *errptr); int sslconnect(struct st_VioSSLFd*, Vio *, long timeout, unsignedlong *errptr);
/* This enumerator is used in parser - should be always visible */ enum SSL_type
{
SSL_TYPE_NOT_SPECIFIED= -1,
SSL_TYPE_NONE,
SSL_TYPE_ANY,
SSL_TYPE_X509,
SSL_TYPE_SPECIFIED
};
/* HFTODO - hide this if we don't want client in embedded server */ /* This structure is for every connection on both sides */ struct st_vio
{
MYSQL_SOCKET mysql_socket; /* Instrumented socket */
my_bool localhost; /* Are we from localhost? */ int fcntl_mode; /* Buffered fcntl(sd,F_GETFL) */ struct sockaddr_storage local; /* Local internet address */ struct sockaddr_storage remote; /* Remote internet address */ enum enum_vio_type type; /* Type of connection */ enum enum_vio_state state; /* State of the connection */ constchar *desc; /* String description */ char *read_buffer; /* buffer for vio_read_buff */ char *read_pos; /* start of unfetched data in the
read buffer */ char *read_end; /* end of unfetched data */ int read_timeout; /* Timeout value (ms) for read ops. */ int write_timeout; /* Timeout value (ms) for write ops. */ /* function pointers. They are similar for socket/SSL/whatever */ void (*viodelete)(Vio*); int (*vioerrno)(Vio*);
size_t (*read)(Vio*, uchar *, size_t);
size_t (*write)(Vio*, const uchar *, size_t); int (*timeout)(Vio*, uint, my_bool); int (*vioblocking)(Vio*, my_bool, my_bool *);
my_bool (*is_blocking)(Vio*); int (*viokeepalive)(Vio*, my_bool); int (*fastsend)(Vio*);
my_bool (*peer_addr)(Vio*, char *, uint16*, size_t); void (*in_addr)(Vio*, struct sockaddr_storage*);
my_bool (*should_retry)(Vio*);
my_bool (*was_timeout)(Vio*); int (*vioclose)(Vio*);
my_bool (*is_connected)(Vio*); int (*shutdown)(Vio *, int);
my_bool (*has_data) (Vio*); int (*io_wait)(Vio*, enum enum_vio_io_event, int);
my_bool (*connect)(Vio*, struct sockaddr *, socklen_t, int); #ifdef HAVE_OPENSSL void *ssl_arg; #endif #ifdef _WIN32
HANDLE hPipe;
OVERLAPPED overlapped; int shutdown_flag; void *tp_ctx; /* threadpool context */ #endif
}; #endif/* vio_violite_h_ */
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-10-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.