|
|
@ -68,6 +68,8 @@
|
|
|
|
#define REDISMODULE_POSITIVE_INFINITE (1.0/0.0)
|
|
|
|
#define REDISMODULE_POSITIVE_INFINITE (1.0/0.0)
|
|
|
|
#define REDISMODULE_NEGATIVE_INFINITE (-1.0/0.0)
|
|
|
|
#define REDISMODULE_NEGATIVE_INFINITE (-1.0/0.0)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define REDISMODULE_NOT_USED(V) ((void) V)
|
|
|
|
|
|
|
|
|
|
|
|
/* ------------------------- End of common defines ------------------------ */
|
|
|
|
/* ------------------------- End of common defines ------------------------ */
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef REDISMODULE_CORE
|
|
|
|
#ifndef REDISMODULE_CORE
|
|
|
@ -82,15 +84,28 @@ typedef struct RedisModuleCallReply RedisModuleCallReply;
|
|
|
|
typedef struct RedisModuleIO RedisModuleIO;
|
|
|
|
typedef struct RedisModuleIO RedisModuleIO;
|
|
|
|
typedef struct RedisModuleType RedisModuleType;
|
|
|
|
typedef struct RedisModuleType RedisModuleType;
|
|
|
|
typedef struct RedisModuleDigest RedisModuleDigest;
|
|
|
|
typedef struct RedisModuleDigest RedisModuleDigest;
|
|
|
|
|
|
|
|
typedef struct RedisModuleBlockedClient RedisModuleBlockedClient;
|
|
|
|
|
|
|
|
|
|
|
|
typedef int (*RedisModuleCmdFunc) (RedisModuleCtx *ctx, RedisModuleString **argv, int argc);
|
|
|
|
typedef int (*RedisModuleCmdFunc) (RedisModuleCtx *ctx, RedisModuleString **argv, int argc);
|
|
|
|
|
|
|
|
|
|
|
|
typedef void *(*RedisModuleTypeLoadFunc)(RedisModuleIO *rdb, int encver);
|
|
|
|
typedef void *(*RedisModuleTypeLoadFunc)(RedisModuleIO *rdb, int encver);
|
|
|
|
typedef void (*RedisModuleTypeSaveFunc)(RedisModuleIO *rdb, void *value);
|
|
|
|
typedef void (*RedisModuleTypeSaveFunc)(RedisModuleIO *rdb, void *value);
|
|
|
|
typedef void (*RedisModuleTypeRewriteFunc)(RedisModuleIO *aof, RedisModuleString *key, void *value);
|
|
|
|
typedef void (*RedisModuleTypeRewriteFunc)(RedisModuleIO *aof, RedisModuleString *key, void *value);
|
|
|
|
|
|
|
|
typedef size_t (*RedisModuleTypeMemUsageFunc)(void *value);
|
|
|
|
typedef void (*RedisModuleTypeDigestFunc)(RedisModuleDigest *digest, void *value);
|
|
|
|
typedef void (*RedisModuleTypeDigestFunc)(RedisModuleDigest *digest, void *value);
|
|
|
|
typedef void (*RedisModuleTypeFreeFunc)(void *value);
|
|
|
|
typedef void (*RedisModuleTypeFreeFunc)(void *value);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define REDISMODULE_TYPE_METHOD_VERSION 1
|
|
|
|
|
|
|
|
typedef struct RedisModuleTypeMethods {
|
|
|
|
|
|
|
|
uint64_t version;
|
|
|
|
|
|
|
|
RedisModuleTypeLoadFunc rdb_load;
|
|
|
|
|
|
|
|
RedisModuleTypeSaveFunc rdb_save;
|
|
|
|
|
|
|
|
RedisModuleTypeRewriteFunc aof_rewrite;
|
|
|
|
|
|
|
|
RedisModuleTypeMemUsageFunc mem_usage;
|
|
|
|
|
|
|
|
RedisModuleTypeDigestFunc digest;
|
|
|
|
|
|
|
|
RedisModuleTypeFreeFunc free;
|
|
|
|
|
|
|
|
} RedisModuleTypeMethods;
|
|
|
|
|
|
|
|
|
|
|
|
#define REDISMODULE_GET_API(name) \
|
|
|
|
#define REDISMODULE_GET_API(name) \
|
|
|
|
RedisModule_GetApi("RedisModule_" #name, ((void **)&RedisModule_ ## name))
|
|
|
|
RedisModule_GetApi("RedisModule_" #name, ((void **)&RedisModule_ ## name))
|
|
|
|
|
|
|
|
|
|
|
@ -169,7 +184,7 @@ int REDISMODULE_API_FUNC(RedisModule_IsKeysPositionRequest)(RedisModuleCtx *ctx)
|
|
|
|
void REDISMODULE_API_FUNC(RedisModule_KeyAtPos)(RedisModuleCtx *ctx, int pos);
|
|
|
|
void REDISMODULE_API_FUNC(RedisModule_KeyAtPos)(RedisModuleCtx *ctx, int pos);
|
|
|
|
unsigned long long REDISMODULE_API_FUNC(RedisModule_GetClientId)(RedisModuleCtx *ctx);
|
|
|
|
unsigned long long REDISMODULE_API_FUNC(RedisModule_GetClientId)(RedisModuleCtx *ctx);
|
|
|
|
void *REDISMODULE_API_FUNC(RedisModule_PoolAlloc)(RedisModuleCtx *ctx, size_t bytes);
|
|
|
|
void *REDISMODULE_API_FUNC(RedisModule_PoolAlloc)(RedisModuleCtx *ctx, size_t bytes);
|
|
|
|
RedisModuleType *REDISMODULE_API_FUNC(RedisModule_CreateDataType)(RedisModuleCtx *ctx, const char *name, int encver, RedisModuleTypeLoadFunc rdb_load, RedisModuleTypeSaveFunc rdb_save, RedisModuleTypeRewriteFunc aof_rewrite, RedisModuleTypeDigestFunc digest, RedisModuleTypeFreeFunc free);
|
|
|
|
RedisModuleType *REDISMODULE_API_FUNC(RedisModule_CreateDataType)(RedisModuleCtx *ctx, const char *name, int encver, RedisModuleTypeMethods *typemethods);
|
|
|
|
int REDISMODULE_API_FUNC(RedisModule_ModuleTypeSetValue)(RedisModuleKey *key, RedisModuleType *mt, void *value);
|
|
|
|
int REDISMODULE_API_FUNC(RedisModule_ModuleTypeSetValue)(RedisModuleKey *key, RedisModuleType *mt, void *value);
|
|
|
|
RedisModuleType *REDISMODULE_API_FUNC(RedisModule_ModuleTypeGetType)(RedisModuleKey *key);
|
|
|
|
RedisModuleType *REDISMODULE_API_FUNC(RedisModule_ModuleTypeGetType)(RedisModuleKey *key);
|
|
|
|
void *REDISMODULE_API_FUNC(RedisModule_ModuleTypeGetValue)(RedisModuleKey *key);
|
|
|
|
void *REDISMODULE_API_FUNC(RedisModule_ModuleTypeGetValue)(RedisModuleKey *key);
|
|
|
@ -192,6 +207,13 @@ int REDISMODULE_API_FUNC(RedisModule_StringAppendBuffer)(RedisModuleCtx *ctx, Re
|
|
|
|
void REDISMODULE_API_FUNC(RedisModule_RetainString)(RedisModuleCtx *ctx, RedisModuleString *str);
|
|
|
|
void REDISMODULE_API_FUNC(RedisModule_RetainString)(RedisModuleCtx *ctx, RedisModuleString *str);
|
|
|
|
int REDISMODULE_API_FUNC(RedisModule_StringCompare)(RedisModuleString *a, RedisModuleString *b);
|
|
|
|
int REDISMODULE_API_FUNC(RedisModule_StringCompare)(RedisModuleString *a, RedisModuleString *b);
|
|
|
|
RedisModuleCtx *REDISMODULE_API_FUNC(RedisModule_GetContextFromIO)(RedisModuleIO *io);
|
|
|
|
RedisModuleCtx *REDISMODULE_API_FUNC(RedisModule_GetContextFromIO)(RedisModuleIO *io);
|
|
|
|
|
|
|
|
RedisModuleBlockedClient *REDISMODULE_API_FUNC(RedisModule_BlockClient)(RedisModuleCtx *ctx, RedisModuleCmdFunc reply_callback, RedisModuleCmdFunc timeout_callback, void (*free_privdata)(void*), long long timeout_ms);
|
|
|
|
|
|
|
|
int REDISMODULE_API_FUNC(RedisModule_UnblockClient)(RedisModuleBlockedClient *bc, void *privdata);
|
|
|
|
|
|
|
|
int REDISMODULE_API_FUNC(RedisModule_IsBlockedReplyRequest)(RedisModuleCtx *ctx);
|
|
|
|
|
|
|
|
int REDISMODULE_API_FUNC(RedisModule_IsBlockedTimeoutRequest)(RedisModuleCtx *ctx);
|
|
|
|
|
|
|
|
void *REDISMODULE_API_FUNC(RedisModule_GetBlockedClientPrivateData)(RedisModuleCtx *ctx);
|
|
|
|
|
|
|
|
int REDISMODULE_API_FUNC(RedisModule_AbortBlock)(RedisModuleBlockedClient *bc);
|
|
|
|
|
|
|
|
long long REDISMODULE_API_FUNC(RedisModule_Milliseconds)(void);
|
|
|
|
|
|
|
|
|
|
|
|
/* This is included inline inside each Redis module. */
|
|
|
|
/* This is included inline inside each Redis module. */
|
|
|
|
static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int apiver) __attribute__((unused));
|
|
|
|
static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int apiver) __attribute__((unused));
|
|
|
@ -293,6 +315,13 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
|
|
|
|
REDISMODULE_GET_API(RetainString);
|
|
|
|
REDISMODULE_GET_API(RetainString);
|
|
|
|
REDISMODULE_GET_API(StringCompare);
|
|
|
|
REDISMODULE_GET_API(StringCompare);
|
|
|
|
REDISMODULE_GET_API(GetContextFromIO);
|
|
|
|
REDISMODULE_GET_API(GetContextFromIO);
|
|
|
|
|
|
|
|
REDISMODULE_GET_API(BlockClient);
|
|
|
|
|
|
|
|
REDISMODULE_GET_API(UnblockClient);
|
|
|
|
|
|
|
|
REDISMODULE_GET_API(IsBlockedReplyRequest);
|
|
|
|
|
|
|
|
REDISMODULE_GET_API(IsBlockedTimeoutRequest);
|
|
|
|
|
|
|
|
REDISMODULE_GET_API(GetBlockedClientPrivateData);
|
|
|
|
|
|
|
|
REDISMODULE_GET_API(AbortBlock);
|
|
|
|
|
|
|
|
REDISMODULE_GET_API(Milliseconds);
|
|
|
|
|
|
|
|
|
|
|
|
RedisModule_SetModuleAttribs(ctx,name,ver,apiver);
|
|
|
|
RedisModule_SetModuleAttribs(ctx,name,ver,apiver);
|
|
|
|
return REDISMODULE_OK;
|
|
|
|
return REDISMODULE_OK;
|
|
|
|