diff options
author | Salvatore Sanfilippo <antirez@gmail.com> | 2019-09-26 11:39:29 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-26 11:39:29 +0200 |
commit | b0a90d8fa825bdc35982529c97ebe316cdca0161 (patch) | |
tree | a5e4d2b9b3bb20da62c284efa944ff9b77805b77 | |
parent | 388bc55344280365e664552920cf7427edfb0d80 (diff) | |
parent | 68fd59056b19c930b7b118d1f531f25947e026b8 (diff) | |
download | redis-b0a90d8fa825bdc35982529c97ebe316cdca0161.tar.gz |
Merge pull request #4980 from yossigo/rm-assert
Add RedisModule_Assert() API call.
-rw-r--r-- | src/module.c | 10 | ||||
-rw-r--r-- | src/redismodule.h | 4 |
2 files changed, 14 insertions, 0 deletions
diff --git a/src/module.c b/src/module.c index 85674ba0d..3074b2b19 100644 --- a/src/module.c +++ b/src/module.c @@ -3598,6 +3598,15 @@ void RM_LogIOError(RedisModuleIO *io, const char *levelstr, const char *fmt, ... va_end(ap); } +/* Redis-like assert function. + * + * A failed assertion will shut down the server and produce logging information + * that looks identical to information generated by Redis itself. + */ +void RM__Assert(const char *estr, const char *file, int line) { + _serverAssert(estr, file, line); +} + /* -------------------------------------------------------------------------- * Blocking clients from modules * -------------------------------------------------------------------------- */ @@ -5467,6 +5476,7 @@ void moduleRegisterCoreAPI(void) { REGISTER_API(EmitAOF); REGISTER_API(Log); REGISTER_API(LogIOError); + REGISTER_API(_Assert); REGISTER_API(StringAppendBuffer); REGISTER_API(RetainString); REGISTER_API(StringCompare); diff --git a/src/redismodule.h b/src/redismodule.h index 21227fe3a..45fcc2091 100644 --- a/src/redismodule.h +++ b/src/redismodule.h @@ -295,6 +295,7 @@ void REDISMODULE_API_FUNC(RedisModule_SaveFloat)(RedisModuleIO *io, float value) float REDISMODULE_API_FUNC(RedisModule_LoadFloat)(RedisModuleIO *io); void REDISMODULE_API_FUNC(RedisModule_Log)(RedisModuleCtx *ctx, const char *level, const char *fmt, ...); void REDISMODULE_API_FUNC(RedisModule_LogIOError)(RedisModuleIO *io, const char *levelstr, const char *fmt, ...); +void REDISMODULE_API_FUNC(RedisModule__Assert)(const char *estr, const char *file, int line); int REDISMODULE_API_FUNC(RedisModule_StringAppendBuffer)(RedisModuleCtx *ctx, RedisModuleString *str, const char *buf, size_t len); void REDISMODULE_API_FUNC(RedisModule_RetainString)(RedisModuleCtx *ctx, RedisModuleString *str); int REDISMODULE_API_FUNC(RedisModule_StringCompare)(RedisModuleString *a, RedisModuleString *b); @@ -468,6 +469,7 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int REDISMODULE_GET_API(EmitAOF); REDISMODULE_GET_API(Log); REDISMODULE_GET_API(LogIOError); + REDISMODULE_GET_API(_Assert); REDISMODULE_GET_API(StringAppendBuffer); REDISMODULE_GET_API(RetainString); REDISMODULE_GET_API(StringCompare); @@ -544,6 +546,8 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int return REDISMODULE_OK; } +#define RedisModule_Assert(_e) ((_e)?(void)0 : (RedisModule__Assert(#_e,__FILE__,__LINE__),exit(1))) + #else /* Things only defined for the modules core, not exported to modules |