From 52c84d144d3b07966d9b3bab8694eb012eef69ce Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 12 Oct 2012 11:00:01 +0200 Subject: MDEV-3802: Millisecond timeout support in non-blocking client library + fix incorrect blocking. After the merge of VIO stuff from MySQL 5.6, there were some bugs left in the non-blocking client library: - vio_io_wait() was introduced without any support for non-blocking operation, so async queries could turn into sync. - Timeouts were changed to milliseconds, but this was not reflected in the non-blocking API, also semantics was changed so signed -1 was used for "no timeout" rather than unsigned 0. Fix by implementing and using my_io_wait_async() in the non-blocking case. And by introducing a new mysql_get_timeout_value_ms() API function that provides the timeout with millisecond granularity. The old mysql_get_timeout_value() is kept and fixed to work correctly, converting the timeout to whole seconds. --- include/mysql_async.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'include/mysql_async.h') diff --git a/include/mysql_async.h b/include/mysql_async.h index 2c84d5bc1b6..2728b9c1dc7 100644 --- a/include/mysql_async.h +++ b/include/mysql_async.h @@ -20,14 +20,14 @@ extern int my_connect_async(struct mysql_async_context *b, my_socket fd, const struct sockaddr *name, uint namelen, - uint timeout); + int vio_timeout); extern ssize_t my_recv_async(struct mysql_async_context *b, int fd, - unsigned char *buf, size_t size, uint timeout); + unsigned char *buf, size_t size, int timeout); extern ssize_t my_send_async(struct mysql_async_context *b, int fd, const unsigned char *buf, size_t size, - uint timeout); -extern my_bool my_poll_read_async(struct mysql_async_context *b, - uint timeout); + int timeout); +extern my_bool my_io_wait_async(struct mysql_async_context *b, + enum enum_vio_io_event event, int timeout); #ifdef HAVE_OPENSSL extern int my_ssl_read_async(struct mysql_async_context *b, SSL *ssl, void *buf, int size); -- cgit v1.2.1