mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
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.
This commit is contained in:
parent
8215ce4695
commit
fc941f8a21
3 changed files with 24 additions and 0 deletions
|
@ -848,6 +848,7 @@ int STDCALL mysql_close_start(MYSQL *sock);
|
|||
int STDCALL mysql_close_cont(MYSQL *sock, int status);
|
||||
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_ms(const MYSQL *mysql);
|
||||
|
||||
/* status return codes */
|
||||
#define MYSQL_NO_DATA 100
|
||||
|
|
|
@ -729,3 +729,4 @@ int mysql_close_start(MYSQL *sock);
|
|||
int mysql_close_cont(MYSQL *sock, int status);
|
||||
my_socket mysql_get_socket(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)
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
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.
|
||||
|
||||
|
|
Loading…
Reference in a new issue