summaryrefslogtreecommitdiff
path: root/include/mysql_async.h
diff options
context:
space:
mode:
authorunknown <knielsen@knielsen-hq.org>2012-10-12 11:00:01 +0200
committerunknown <knielsen@knielsen-hq.org>2012-10-12 11:00:01 +0200
commit52c84d144d3b07966d9b3bab8694eb012eef69ce (patch)
tree2419ab191bc656e3355fdd38b8cf274f68f4a049 /include/mysql_async.h
parentd7e0499407aa684f1d09cf295dba9f912b74fd3b (diff)
downloadmariadb-git-52c84d144d3b07966d9b3bab8694eb012eef69ce.tar.gz
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.
Diffstat (limited to 'include/mysql_async.h')
-rw-r--r--include/mysql_async.h10
1 files changed, 5 insertions, 5 deletions
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);