summaryrefslogtreecommitdiff
path: root/hiredis.h
diff options
context:
space:
mode:
authorPieter Noordhuis <pcnoordhuis@gmail.com>2010-09-25 22:31:07 +0200
committerPieter Noordhuis <pcnoordhuis@gmail.com>2010-09-25 22:31:07 +0200
commit1c245845eda46512ed3eb5f7e502c3b7f535ac89 (patch)
tree33f84140f8bccd32a6c57255f669c0196bddfdf8 /hiredis.h
parent8345467b2e391aa0e62414d48abcc15c6291d945 (diff)
Trigger callbacks when a command is issued or the context is free'd
Diffstat (limited to 'hiredis.h')
-rw-r--r--hiredis.h22
1 files changed, 18 insertions, 4 deletions
diff --git a/hiredis.h b/hiredis.h
index 96508ad..72a4077 100644
--- a/hiredis.h
+++ b/hiredis.h
@@ -70,11 +70,13 @@ typedef struct redisReplyObjectFunctions {
void (*freeObject)(void*);
} redisReplyFunctions;
-/* Callback prototype */
-struct redisContext; /* needs forward declaration of redisContext */
-typedef void redisCallbackFn(struct redisContext*, redisReply*, void*);
+struct redisContext; /* need forward declaration of redisContext */
+
+/* Callbacks triggered on non-reply events. */
+typedef void (redisContextCallback)(struct redisContext*, void*);
-/* Callback container */
+/* Reply callback prototype and container */
+typedef void redisCallbackFn(struct redisContext*, redisReply*, void*);
typedef struct redisCallback {
redisCallbackFn *fn;
void *privdata;
@@ -86,8 +88,18 @@ typedef struct redisContext {
int flags;
sds error; /* Error object is set when in erronous state */
sds obuf; /* Write buffer */
+
+ /* Function set for reply buildup and reply reader */
redisReplyFunctions *fn;
void *reader;
+
+ /* Non-reply callbacks */
+ redisContextCallback *cbCommand;
+ void *privdataCommand;
+ redisContextCallback *cbFree;
+ void *privdataFree;
+
+ /* Reply callbacks */
redisCallback *callbacks;
int cpos;
int clen;
@@ -103,6 +115,8 @@ int redisReplyReaderGetReply(void *reader, void **reply);
redisContext *redisConnect(const char *ip, int port, redisReplyFunctions *fn);
redisContext *redisConnectNonBlock(const char *ip, int port, redisReplyFunctions *fn);
+void redisSetCommandCallback(redisContext *c, redisContextCallback *fn, void *privdata);
+void redisSetFreeCallback(redisContext *c, redisContextCallback *fn, void *privdata);
void redisFree(redisContext *c);
int redisBufferRead(redisContext *c);
int redisBufferWrite(redisContext *c, int *done);