123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- #ifndef __HIREDIS_ASYNC_H
- #define __HIREDIS_ASYNC_H
- #include "hiredis.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- struct redisAsyncContext;
- struct dict;
- typedef void (redisCallbackFn)(struct redisAsyncContext*, void*, void*);
- typedef struct redisCallback {
- struct redisCallback *next;
- redisCallbackFn *fn;
- int pending_subs;
- int unsubscribe_sent;
- void *privdata;
- } redisCallback;
- typedef struct redisCallbackList {
- redisCallback *head, *tail;
- } redisCallbackList;
- typedef void (redisDisconnectCallback)(const struct redisAsyncContext*, int status);
- typedef void (redisConnectCallback)(const struct redisAsyncContext*, int status);
- typedef void (redisConnectCallbackNC)(struct redisAsyncContext *, int status);
- typedef void(redisTimerCallback)(void *timer, void *privdata);
- typedef struct redisAsyncContext {
-
- redisContext c;
-
- int err;
- char *errstr;
-
- void *data;
- void (*dataCleanup)(void *privdata);
-
- struct {
- void *data;
-
- void (*addRead)(void *privdata);
- void (*delRead)(void *privdata);
- void (*addWrite)(void *privdata);
- void (*delWrite)(void *privdata);
- void (*cleanup)(void *privdata);
- void (*scheduleTimer)(void *privdata, struct timeval tv);
- } ev;
-
- redisDisconnectCallback *onDisconnect;
-
- redisConnectCallback *onConnect;
- redisConnectCallbackNC *onConnectNC;
-
- redisCallbackList replies;
-
- struct sockaddr *saddr;
- size_t addrlen;
-
- struct {
- redisCallbackList replies;
- struct dict *channels;
- struct dict *patterns;
- int pending_unsubs;
- } sub;
-
- redisAsyncPushFn *push_cb;
- } redisAsyncContext;
- redisAsyncContext *redisAsyncConnectWithOptions(const redisOptions *options);
- redisAsyncContext *redisAsyncConnect(const char *ip, int port);
- redisAsyncContext *redisAsyncConnectBind(const char *ip, int port, const char *source_addr);
- redisAsyncContext *redisAsyncConnectBindWithReuse(const char *ip, int port,
- const char *source_addr);
- redisAsyncContext *redisAsyncConnectUnix(const char *path);
- int redisAsyncSetConnectCallback(redisAsyncContext *ac, redisConnectCallback *fn);
- int redisAsyncSetConnectCallbackNC(redisAsyncContext *ac, redisConnectCallbackNC *fn);
- int redisAsyncSetDisconnectCallback(redisAsyncContext *ac, redisDisconnectCallback *fn);
- redisAsyncPushFn *redisAsyncSetPushCallback(redisAsyncContext *ac, redisAsyncPushFn *fn);
- int redisAsyncSetTimeout(redisAsyncContext *ac, struct timeval tv);
- void redisAsyncDisconnect(redisAsyncContext *ac);
- void redisAsyncFree(redisAsyncContext *ac);
- void redisAsyncHandleRead(redisAsyncContext *ac);
- void redisAsyncHandleWrite(redisAsyncContext *ac);
- void redisAsyncHandleTimeout(redisAsyncContext *ac);
- void redisAsyncRead(redisAsyncContext *ac);
- void redisAsyncWrite(redisAsyncContext *ac);
- int redisvAsyncCommand(redisAsyncContext *ac, redisCallbackFn *fn, void *privdata, const char *format, va_list ap);
- int redisAsyncCommand(redisAsyncContext *ac, redisCallbackFn *fn, void *privdata, const char *format, ...);
- int redisAsyncCommandArgv(redisAsyncContext *ac, redisCallbackFn *fn, void *privdata, int argc, const char **argv, const size_t *argvlen);
- int redisAsyncFormattedCommand(redisAsyncContext *ac, redisCallbackFn *fn, void *privdata, const char *cmd, size_t len);
- #ifdef __cplusplus
- }
- #endif
- #endif
|