Skip to content

Commit 3a0257d

Browse files
authored
Merge pull request #451 from RedisLabsModules/flex_api
[MOD-13899] Add BigRedis extension APIs
2 parents 06d55e5 + 43ac423 commit 3a0257d

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

src/include/redismodule.h

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,18 @@ struct RedisModuleCtx;
516516
struct RedisModuleDefragCtx;
517517
typedef void (*RedisModuleEventCallback)(struct RedisModuleCtx *ctx, RedisModuleEvent eid, uint64_t subevent, void *data);
518518

519+
/* Big Module API - Callbacks
520+
* ----------------------------
521+
* Callback registered by modules for disk usage queries.
522+
* This typedef is in the common section so it's visible to both core and modules. */
523+
#define REDISMODULE_BIG_CALLBACKS_VERSION 1
524+
typedef struct RedisModuleBigCallbacks {
525+
uint64_t version; /* Version of this structure for ABI compat. */
526+
size_t (*getDiskUsage)(void); /* Returns module's disk usage (SST files, etc.) */
527+
} RedisModuleBigCallbacksV1;
528+
529+
#define RedisModuleBigCallbacks RedisModuleBigCallbacksV1
530+
519531
/* IMPORTANT: When adding a new version of one of below structures that contain
520532
* event data (RedisModuleFlushInfoV1 for example) we have to avoid renaming the
521533
* old RedisModuleEvent structure.
@@ -1329,6 +1341,16 @@ REDISMODULE_API int (*RedisModule_RdbLoad)(RedisModuleCtx *ctx, RedisModuleRdbSt
13291341
REDISMODULE_API int (*RedisModule_RdbSave)(RedisModuleCtx *ctx, RedisModuleRdbStream *stream, int flags) REDISMODULE_ATTR;
13301342
REDISMODULE_API const char * (*RedisModule_GetInternalSecret)(RedisModuleCtx *ctx, size_t *len) REDISMODULE_ATTR;
13311343

1344+
/* bigredis extensions
1345+
* -------------------*/
1346+
REDISMODULE_API int (*RedisModule_BigModuleRegister)(RedisModuleCtx *ctx, RedisModuleBigCallbacks *callbacks) REDISMODULE_ATTR;
1347+
REDISMODULE_API ssize_t (*RedisModule_BigWriteBufferBudgetInit)(RedisModuleCtx *ctx, int percentage) REDISMODULE_ATTR;
1348+
REDISMODULE_API void (*RedisModule_BigWriteBufferBudgetRelease)(RedisModuleCtx *ctx) REDISMODULE_ATTR;
1349+
REDISMODULE_API char* (*RedisModule_BigGetDbPath)(RedisModuleCtx *ctx, const char *index_name) REDISMODULE_ATTR;
1350+
REDISMODULE_API int (*RedisModule_BigRegisterDb)(RedisModuleCtx *ctx, void *db_handle, void **cf_handles, size_t num_cf_handles) REDISMODULE_ATTR;
1351+
REDISMODULE_API int (*RedisModule_BigRegisterDbAddCf)(RedisModuleCtx *ctx, void *db_handle, void *cf_handle) REDISMODULE_ATTR;
1352+
REDISMODULE_API int (*RedisModule_BigUnregisterDb)(RedisModuleCtx *ctx, void *db_handle) REDISMODULE_ATTR;
1353+
13321354
#define RedisModule_IsAOFClient(id) ((id) == UINT64_MAX)
13331355

13341356
/* This is included inline inside each Redis module. */
@@ -1700,6 +1722,15 @@ static int RedisModule_InitAPI(RedisModuleCtx *ctx) {
17001722
REDISMODULE_GET_API(RdbLoad);
17011723
REDISMODULE_GET_API(RdbSave);
17021724
REDISMODULE_GET_API(GetInternalSecret);
1725+
1726+
/* Bigredis Extensions */
1727+
REDISMODULE_GET_API(BigModuleRegister);
1728+
REDISMODULE_GET_API(BigWriteBufferBudgetInit);
1729+
REDISMODULE_GET_API(BigWriteBufferBudgetRelease);
1730+
REDISMODULE_GET_API(BigGetDbPath);
1731+
REDISMODULE_GET_API(BigRegisterDb);
1732+
REDISMODULE_GET_API(BigRegisterDbAddCf);
1733+
REDISMODULE_GET_API(BigUnregisterDb);
17031734
}
17041735
static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int apiver) {
17051736
RedisModule_InitAPI(ctx);

0 commit comments

Comments
 (0)