Commit fc941f8a authored by unknown's avatar unknown

MDEV-3802. Millisecond timeout support in non-blocking client library.

In 10.0, VIO timeouts can be in milliseconds, so we add a new function
mysql_get_timeout_value_ms() which can return millisecond-precision
timeout values.

In 5.5, we do not have millisecond precision for timeouts. But we still
provide the mysql_get_timeout_value_ms() function; this makes it easier
for applications as they can use the millisecond function in 10.0 and
still work with the 5.5 version of the client library.
parent 8215ce46
...@@ -848,6 +848,7 @@ int STDCALL mysql_close_start(MYSQL *sock); ...@@ -848,6 +848,7 @@ int STDCALL mysql_close_start(MYSQL *sock);
int STDCALL mysql_close_cont(MYSQL *sock, int status); int STDCALL mysql_close_cont(MYSQL *sock, int status);
my_socket STDCALL mysql_get_socket(const MYSQL *mysql); my_socket STDCALL mysql_get_socket(const MYSQL *mysql);
unsigned int STDCALL mysql_get_timeout_value(const MYSQL *mysql); unsigned int STDCALL mysql_get_timeout_value(const MYSQL *mysql);
unsigned int STDCALL mysql_get_timeout_value_ms(const MYSQL *mysql);
/* status return codes */ /* status return codes */
#define MYSQL_NO_DATA 100 #define MYSQL_NO_DATA 100
......
...@@ -729,3 +729,4 @@ int mysql_close_start(MYSQL *sock); ...@@ -729,3 +729,4 @@ int mysql_close_start(MYSQL *sock);
int mysql_close_cont(MYSQL *sock, int status); int mysql_close_cont(MYSQL *sock, int status);
my_socket mysql_get_socket(const MYSQL *mysql); my_socket mysql_get_socket(const MYSQL *mysql);
unsigned int mysql_get_timeout_value(const MYSQL *mysql); unsigned int mysql_get_timeout_value(const MYSQL *mysql);
unsigned int mysql_get_timeout_value_ms(const MYSQL *mysql);
...@@ -246,6 +246,28 @@ mysql_get_timeout_value(const MYSQL *mysql) ...@@ -246,6 +246,28 @@ mysql_get_timeout_value(const MYSQL *mysql)
} }
/*
In 10.0, VIO timeouts are in milliseconds, so we support getting the
millisecond timeout value from async applications.
In 5.5, timeouts are always in seconds, but we support the 10.0 version
that provides milliseconds, so applications can work with either version
of the library easily.
When merging this to 10.0, this function must be removed and the 10.0
version used.
*/
unsigned int STDCALL
mysql_get_timeout_value_ms(const MYSQL *mysql)
{
unsigned int timeout= mysql->options.extension->async_context->timeout_value;
if (timeout <= UINT_MAX / 1000)
return timeout*1000;
else
return UINT_MAX;
}
/* /*
Now create non-blocking definitions for all the calls that may block. Now create non-blocking definitions for all the calls that may block.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment