Module API for current command name (#8792)
sometimes you can be very deep in the call stack, without access to argv. once you're there you may want your reply/log to contain the command name. (cherry picked from commit e16d3eb998f7017c95ef17179de77aa5b6f2e272)
This commit is contained in:
parent
e6df2f6210
commit
c547dff650
@ -9006,6 +9006,14 @@ int *RM_GetCommandKeys(RedisModuleCtx *ctx, RedisModuleString **argv, int argc,
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Return the name of the command currently running */
|
||||||
|
const char *RM_GetCurrentCommandName(RedisModuleCtx *ctx) {
|
||||||
|
if (!ctx || !ctx->client || !ctx->client->cmd)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return (const char*)ctx->client->cmd->name;
|
||||||
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------
|
/* --------------------------------------------------------------------------
|
||||||
* ## Defrag API
|
* ## Defrag API
|
||||||
* -------------------------------------------------------------------------- */
|
* -------------------------------------------------------------------------- */
|
||||||
@ -9467,6 +9475,7 @@ void moduleRegisterCoreAPI(void) {
|
|||||||
REGISTER_API(GetServerVersion);
|
REGISTER_API(GetServerVersion);
|
||||||
REGISTER_API(GetClientCertificate);
|
REGISTER_API(GetClientCertificate);
|
||||||
REGISTER_API(GetCommandKeys);
|
REGISTER_API(GetCommandKeys);
|
||||||
|
REGISTER_API(GetCurrentCommandName);
|
||||||
REGISTER_API(GetTypeMethodVersion);
|
REGISTER_API(GetTypeMethodVersion);
|
||||||
REGISTER_API(RegisterDefragFunc);
|
REGISTER_API(RegisterDefragFunc);
|
||||||
REGISTER_API(DefragAlloc);
|
REGISTER_API(DefragAlloc);
|
||||||
|
@ -836,6 +836,7 @@ REDISMODULE_API int (*RedisModule_AuthenticateClientWithUser)(RedisModuleCtx *ct
|
|||||||
REDISMODULE_API int (*RedisModule_DeauthenticateAndCloseClient)(RedisModuleCtx *ctx, uint64_t client_id) REDISMODULE_ATTR;
|
REDISMODULE_API int (*RedisModule_DeauthenticateAndCloseClient)(RedisModuleCtx *ctx, uint64_t client_id) REDISMODULE_ATTR;
|
||||||
REDISMODULE_API RedisModuleString * (*RedisModule_GetClientCertificate)(RedisModuleCtx *ctx, uint64_t id) REDISMODULE_ATTR;
|
REDISMODULE_API RedisModuleString * (*RedisModule_GetClientCertificate)(RedisModuleCtx *ctx, uint64_t id) REDISMODULE_ATTR;
|
||||||
REDISMODULE_API int *(*RedisModule_GetCommandKeys)(RedisModuleCtx *ctx, RedisModuleString **argv, int argc, int *num_keys) REDISMODULE_ATTR;
|
REDISMODULE_API int *(*RedisModule_GetCommandKeys)(RedisModuleCtx *ctx, RedisModuleString **argv, int argc, int *num_keys) REDISMODULE_ATTR;
|
||||||
|
REDISMODULE_API const char *(*RedisModule_GetCurrentCommandName)(RedisModuleCtx *ctx) REDISMODULE_ATTR;
|
||||||
REDISMODULE_API int (*RedisModule_RegisterDefragFunc)(RedisModuleCtx *ctx, RedisModuleDefragFunc func) REDISMODULE_ATTR;
|
REDISMODULE_API int (*RedisModule_RegisterDefragFunc)(RedisModuleCtx *ctx, RedisModuleDefragFunc func) REDISMODULE_ATTR;
|
||||||
REDISMODULE_API void *(*RedisModule_DefragAlloc)(RedisModuleDefragCtx *ctx, void *ptr) REDISMODULE_ATTR;
|
REDISMODULE_API void *(*RedisModule_DefragAlloc)(RedisModuleDefragCtx *ctx, void *ptr) REDISMODULE_ATTR;
|
||||||
REDISMODULE_API RedisModuleString *(*RedisModule_DefragRedisModuleString)(RedisModuleDefragCtx *ctx, RedisModuleString *str) REDISMODULE_ATTR;
|
REDISMODULE_API RedisModuleString *(*RedisModule_DefragRedisModuleString)(RedisModuleDefragCtx *ctx, RedisModuleString *str) REDISMODULE_ATTR;
|
||||||
@ -1108,6 +1109,7 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
|
|||||||
REDISMODULE_GET_API(AuthenticateClientWithUser);
|
REDISMODULE_GET_API(AuthenticateClientWithUser);
|
||||||
REDISMODULE_GET_API(GetClientCertificate);
|
REDISMODULE_GET_API(GetClientCertificate);
|
||||||
REDISMODULE_GET_API(GetCommandKeys);
|
REDISMODULE_GET_API(GetCommandKeys);
|
||||||
|
REDISMODULE_GET_API(GetCurrentCommandName);
|
||||||
REDISMODULE_GET_API(RegisterDefragFunc);
|
REDISMODULE_GET_API(RegisterDefragFunc);
|
||||||
REDISMODULE_GET_API(DefragAlloc);
|
REDISMODULE_GET_API(DefragAlloc);
|
||||||
REDISMODULE_GET_API(DefragRedisModuleString);
|
REDISMODULE_GET_API(DefragRedisModuleString);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user