From 27f9c8108c1c6a803ad8e386d655c7065feda394 Mon Sep 17 00:00:00 2001 From: antirez Date: Sun, 1 Apr 2018 16:20:57 +0200 Subject: [PATCH] Modules Cluster API: GetMyClusterID() added. --- src/module.c | 8 ++++++++ src/redismodule.h | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/module.c b/src/module.c index 2a11b850..78e6aea4 100644 --- a/src/module.c +++ b/src/module.c @@ -3961,6 +3961,13 @@ void RM_FreeClusterNodesList(char **ids) { zfree(ids); } +/* Return this node ID (REDISMODULE_CLUSTER_ID_LEN bytes) or NULL if the cluster + * is disabled. */ +const char *RM_GetMyClusterID(void) { + if (!server.cluster_enabled) return NULL; + return server.cluster->myself->name; +} + /* Populate the specified info for the node having as ID the specified 'id', * then returns REDISMODULE_OK. Otherwise if the node ID does not exist from * the POV of this local node, REDISMODULE_ERR is returned. @@ -4557,4 +4564,5 @@ void moduleRegisterCoreAPI(void) { REGISTER_API(CreateTimer); REGISTER_API(StopTimer); REGISTER_API(GetTimerInfo); + REGISTER_API(GetMyClusterID); } diff --git a/src/redismodule.h b/src/redismodule.h index 47fc6668..e16031a4 100644 --- a/src/redismodule.h +++ b/src/redismodule.h @@ -276,6 +276,7 @@ void REDISMODULE_API_FUNC(RedisModule_FreeClusterNodesList)(char **ids); RedisModuleTimerID REDISMODULE_API_FUNC(RedisModule_CreateTimer)(RedisModuleCtx *ctx, mstime_t period, RedisModuleTimerProc callback, void *data); int REDISMODULE_API_FUNC(RedisModule_StopTimer)(RedisModuleCtx *ctx, RedisModuleTimerID id, void **data); int REDISMODULE_API_FUNC(RedisModule_GetTimerInfo)(RedisModuleCtx *ctx, RedisModuleTimerID id, uint64_t *remaining, void **data); +const char *REDISMODULE_API_FUNC(RM_GetMyClusterID)(void); /* Experimental APIs */ #ifdef REDISMODULE_EXPERIMENTAL_API @@ -407,6 +408,7 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int REDISMODULE_GET_API(CreateTimer); REDISMODULE_GET_API(StopTimer); REDISMODULE_GET_API(GetTimerInfo); + REDISMODULE_GET_API(GetMyClusterID); #ifdef REDISMODULE_EXPERIMENTAL_API REDISMODULE_GET_API(GetThreadSafeContext); @@ -420,7 +422,6 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int REDISMODULE_GET_API(GetBlockedClientPrivateData); REDISMODULE_GET_API(AbortBlock); REDISMODULE_GET_API(SubscribeToKeyspaceEvents); - #endif if (RedisModule_IsModuleNameBusy && RedisModule_IsModuleNameBusy(name)) return REDISMODULE_ERR;