Make error ptr accessible from async context
This commit is contained in:
parent
4e3bd7893d
commit
437eea80fc
12
async.c
12
async.c
@ -40,9 +40,18 @@ static redisAsyncContext *redisAsyncInitialize(redisContext *c) {
|
||||
return ac;
|
||||
}
|
||||
|
||||
/* We want the error field to be accessible directly instead of requiring
|
||||
* an indirection to the redisContext struct. */
|
||||
static void __redisAsyncCopyError(redisAsyncContext *ac) {
|
||||
redisContext *c = &(ac->c);
|
||||
if (c->error != NULL)
|
||||
ac->error = c->error;
|
||||
}
|
||||
|
||||
redisAsyncContext *redisAsyncConnect(const char *ip, int port) {
|
||||
redisContext *c = redisConnectNonBlock(ip,port);
|
||||
redisAsyncContext *ac = redisAsyncInitialize(c);
|
||||
__redisAsyncCopyError(ac);
|
||||
return ac;
|
||||
}
|
||||
|
||||
@ -78,7 +87,8 @@ static void __redisAsyncDisconnect(redisAsyncContext *ac) {
|
||||
if (ac->evCleanup) ac->evCleanup(ac->data);
|
||||
|
||||
/* Execute callback with proper status */
|
||||
status = (c->error == NULL) ? REDIS_OK : REDIS_ERR;
|
||||
__redisAsyncCopyError(ac);
|
||||
status = (ac->error == NULL) ? REDIS_OK : REDIS_ERR;
|
||||
if (ac->onDisconnect) ac->onDisconnect(ac,status);
|
||||
|
||||
/* Cleanup self */
|
||||
|
3
async.h
3
async.h
@ -54,6 +54,9 @@ typedef struct redisAsyncContext {
|
||||
/* Hold the regular context, so it can be realloc'ed. */
|
||||
redisContext c;
|
||||
|
||||
/* Hold a reference to the error object so it can be used directly. */
|
||||
char *error;
|
||||
|
||||
/* Called when the library expects to start reading/writing.
|
||||
* The supplied functions should be idempotent. */
|
||||
void (*evAddRead)(void *privdata);
|
||||
|
Loading…
Reference in New Issue
Block a user