Minor refactor for scheduling an async timer. (#854)
Small change to the logic introduced in #839
This commit is contained in:
parent
38b5ae543f
commit
be32bcdc8e
@ -54,14 +54,18 @@
|
|||||||
} while(0);
|
} while(0);
|
||||||
|
|
||||||
static inline void refreshTimeout(redisAsyncContext *ctx) {
|
static inline void refreshTimeout(redisAsyncContext *ctx) {
|
||||||
if (!(ctx->c.flags & REDIS_CONNECTED)) {
|
#define REDIS_TIMER_ISSET(tvp) \
|
||||||
if (ctx->c.connect_timeout && ctx->ev.scheduleTimer &&
|
(tvp && ((tvp)->tv_sec || (tvp)->tv_usec))
|
||||||
(ctx->c.connect_timeout->tv_sec || ctx->c.connect_timeout->tv_usec)) {
|
|
||||||
ctx->ev.scheduleTimer(ctx->ev.data, *ctx->c.connect_timeout);
|
#define REDIS_EL_TIMER(ac, tvp) \
|
||||||
|
if ((ac)->ev.scheduleTimer && REDIS_TIMER_ISSET(tvp)) { \
|
||||||
|
(ac)->ev.scheduleTimer((ac)->ev.data, *(tvp)); \
|
||||||
}
|
}
|
||||||
} else if (ctx->c.command_timeout && ctx->ev.scheduleTimer &&
|
|
||||||
(ctx->c.command_timeout->tv_sec || ctx->c.command_timeout->tv_usec)) {
|
if (ctx->c.flags & REDIS_CONNECTED) {
|
||||||
ctx->ev.scheduleTimer(ctx->ev.data, *ctx->c.command_timeout);
|
REDIS_EL_TIMER(ctx, ctx->c.command_timeout);
|
||||||
|
} else {
|
||||||
|
REDIS_EL_TIMER(ctx, ctx->c.connect_timeout);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -176,9 +176,10 @@ typedef struct {
|
|||||||
int type;
|
int type;
|
||||||
/* bit field of REDIS_OPT_xxx */
|
/* bit field of REDIS_OPT_xxx */
|
||||||
int options;
|
int options;
|
||||||
/* timeout value for connect operation. if NULL, no timeout is used */
|
/* timeout value for connect operation. If NULL, no timeout is used */
|
||||||
const struct timeval *connect_timeout;
|
const struct timeval *connect_timeout;
|
||||||
/* timeout value for commands. if NULL, no timeout is used. (can be set later on with redisSetTimeout/redisAsyncSetTimeout) */
|
/* timeout value for commands. If NULL, no timeout is used. This can be
|
||||||
|
* updated at runtime with redisSetTimeout/redisAsyncSetTimeout. */
|
||||||
const struct timeval *command_timeout;
|
const struct timeval *command_timeout;
|
||||||
union {
|
union {
|
||||||
/** use this field for tcp/ip connections */
|
/** use this field for tcp/ip connections */
|
||||||
|
Loading…
Reference in New Issue
Block a user