… | |
… | |
30 | #endif /* __cplusplus */ |
30 | #endif /* __cplusplus */ |
31 | |
31 | |
32 | #if MYSQL_VERSION_ID < 50100 |
32 | #if MYSQL_VERSION_ID < 50100 |
33 | typedef I8 *xgptr; |
33 | typedef I8 *xgptr; |
34 | typedef I8 *const cxgptr; |
34 | typedef I8 *const cxgptr; |
35 | typedef int xlen; |
35 | typedef int xsize_t; |
|
|
36 | typedef int xssize_t; |
36 | #else |
37 | #else |
37 | typedef U8 *xgptr; |
38 | typedef U8 *xgptr; |
38 | typedef const U8 *cxgptr; |
39 | typedef const U8 *cxgptr; |
39 | typedef size_t xlen; |
40 | typedef size_t xsize_t; |
|
|
41 | typedef size_t xssize_t; |
40 | #endif |
42 | #endif |
41 | |
43 | |
42 | enum enum_vio_type |
44 | enum enum_vio_type |
43 | { |
45 | { |
44 | VIO_CLOSED, VIO_TYPE_TCPIP, VIO_TYPE_SOCKET, VIO_TYPE_NAMEDPIPE, |
46 | VIO_CLOSED, VIO_TYPE_TCPIP, VIO_TYPE_SOCKET, VIO_TYPE_NAMEDPIPE, |
… | |
… | |
58 | HANDLE event_server_wrote, |
60 | HANDLE event_server_wrote, |
59 | HANDLE event_server_read, |
61 | HANDLE event_server_read, |
60 | HANDLE event_client_wrote, |
62 | HANDLE event_client_wrote, |
61 | HANDLE event_client_read, |
63 | HANDLE event_client_read, |
62 | HANDLE event_conn_closed); |
64 | HANDLE event_conn_closed); |
63 | xlen vio_read_pipe(Vio *vio, xgptr buf, xlen size); |
65 | xsize_t vio_read_pipe(Vio *vio, xgptr buf, xsize_t size); |
64 | xlen vio_write_pipe(Vio *vio, xcgptr buf, xlen size); |
66 | xsize_t vio_write_pipe(Vio *vio, xcgptr buf, xsize_t size); |
65 | xlen vio_close_pipe(Vio * vio); |
67 | xsize_t vio_close_pipe(Vio * vio); |
66 | #else |
68 | #else |
67 | #define HANDLE void * |
69 | #define HANDLE void * |
68 | #endif /* __WIN__ */ |
70 | #endif /* __WIN__ */ |
69 | |
71 | |
70 | void vio_delete(Vio* vio); |
72 | void vio_delete(Vio* vio); |
71 | int vio_close(Vio* vio); |
73 | int vio_close(Vio* vio); |
72 | void vio_reset(Vio* vio, enum enum_vio_type type, |
74 | void vio_reset(Vio* vio, enum enum_vio_type type, |
73 | my_socket sd, HANDLE hPipe, uint flags); |
75 | my_socket sd, HANDLE hPipe, uint flags); |
74 | xlen vio_read(Vio *vio, xgptr buf, xlen size); |
76 | xsize_t vio_read(Vio *vio, xgptr buf, xsize_t size); |
75 | xlen vio_read_buff(Vio *vio, xgptr buf, xlen size); |
77 | xsize_t vio_read_buff(Vio *vio, xgptr buf, xsize_t size); |
76 | xlen vio_write(Vio *vio, cxgptr buf, xlen size); |
78 | xsize_t vio_write(Vio *vio, cxgptr buf, xsize_t size); |
77 | int vio_blocking(Vio *vio, my_bool onoff, my_bool *old_mode); |
79 | int vio_blocking(Vio *vio, my_bool onoff, my_bool *old_mode); |
78 | my_bool vio_is_blocking(Vio *vio); |
80 | my_bool vio_is_blocking(Vio *vio); |
79 | /* setsockopt TCP_NODELAY at IPPROTO_TCP level, when possible */ |
81 | /* setsockopt TCP_NODELAY at IPPROTO_TCP level, when possible */ |
80 | int vio_fastsend(Vio *vio); |
82 | int vio_fastsend(Vio *vio); |
81 | /* setsockopt SO_KEEPALIVE at SOL_SOCKET level, when possible */ |
83 | /* setsockopt SO_KEEPALIVE at SOL_SOCKET level, when possible */ |
… | |
… | |
134 | |
136 | |
135 | typedef unsigned char uchar; |
137 | typedef unsigned char uchar; |
136 | |
138 | |
137 | /* HFTODO - hide this if we don't want client in embedded server */ |
139 | /* HFTODO - hide this if we don't want client in embedded server */ |
138 | /* This structure is for every connection on both sides */ |
140 | /* This structure is for every connection on both sides */ |
139 | #if defined(MARIADB_BASE_VERSION) && 0 |
141 | #if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 100010 |
140 | |
142 | |
141 | #define DESC_IS_PTR 1 |
143 | #define DESC_IS_PTR 1 |
142 | |
|
|
143 | struct st_vio |
144 | struct st_vio |
144 | { |
145 | { |
145 | my_socket sd; /* my_socket - real or imaginary */ |
146 | my_socket sd; /* my_socket - real or imaginary */ |
146 | void *m_psi; |
147 | void *m_psi; |
147 | my_bool localhost; /* Are we from localhost? */ |
148 | my_bool localhost; /* Are we from localhost? */ |
… | |
… | |
195 | read buffer */ |
196 | read buffer */ |
196 | char *read_end; /* end of unfetched data */ |
197 | char *read_end; /* end of unfetched data */ |
197 | /* function pointers. They are similar for socket/SSL/whatever */ |
198 | /* function pointers. They are similar for socket/SSL/whatever */ |
198 | void (*viodelete)(Vio*); |
199 | void (*viodelete)(Vio*); |
199 | int (*vioerrno)(Vio*); |
200 | int (*vioerrno)(Vio*); |
200 | xlen (*read)(Vio*, xgptr, xlen); |
201 | xssize_t (*read)(Vio*, xgptr, xsize_t); |
201 | xlen (*write)(Vio*, cxgptr, xlen); |
202 | xssize_t (*write)(Vio*, cxgptr, xsize_t); |
202 | int (*vioblocking)(Vio*, my_bool, my_bool *); |
203 | int (*vioblocking)(Vio*, my_bool, my_bool *); |
203 | my_bool (*is_blocking)(Vio*); |
204 | my_bool (*is_blocking)(Vio*); |
204 | int (*viokeepalive)(Vio*, my_bool); |
205 | int (*viokeepalive)(Vio*, my_bool); |
205 | int (*fastsend)(Vio*); |
206 | int (*fastsend)(Vio*); |
206 | my_bool (*peer_addr)(Vio*, char *, uint16*); |
207 | my_bool (*peer_addr)(Vio*, char *, uint16*); |
… | |
… | |
226 | char desc[30]; /* String description */ |
227 | char desc[30]; /* String description */ |
227 | char *read_buffer; /* buffer for vio_read_buff */ |
228 | char *read_buffer; /* buffer for vio_read_buff */ |
228 | char *read_pos; /* start of unfetched data in the |
229 | char *read_pos; /* start of unfetched data in the |
229 | read buffer */ |
230 | read buffer */ |
230 | char *read_end; /* end of unfetched data */ |
231 | char *read_end; /* end of unfetched data */ |
|
|
232 | #if defined(MARIADB_BASE_VERSION) |
|
|
233 | struct mysql_async_context *async_context; /* For non-blocking API */ |
|
|
234 | uint read_timeout, write_timeout; |
|
|
235 | #endif |
231 | /* function pointers. They are similar for socket/SSL/whatever */ |
236 | /* function pointers. They are similar for socket/SSL/whatever */ |
232 | void (*viodelete)(Vio*); |
237 | void (*viodelete)(Vio*); |
233 | int (*vioerrno)(Vio*); |
238 | int (*vioerrno)(Vio*); |
234 | size_t (*read)(Vio*, unsigned char *, size_t); |
239 | size_t (*read)(Vio*, unsigned char *, size_t); |
235 | size_t (*write)(Vio*, const unsigned char *, size_t); |
240 | size_t (*write)(Vio*, const unsigned char *, size_t); |