Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
0205dd01
Commit
0205dd01
authored
Sep 28, 2017
by
zhaozhao.zz
Committed by
antirez
Nov 24, 2017
Browse files
Modules: handle the busy module name
parent
3cce566e
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/module.c
View file @
0205dd01
...
@@ -648,7 +648,7 @@ int RM_CreateCommand(RedisModuleCtx *ctx, const char *name, RedisModuleCmdFunc c
...
@@ -648,7 +648,7 @@ int RM_CreateCommand(RedisModuleCtx *ctx, const char *name, RedisModuleCmdFunc c
*
*
* This is an internal function, Redis modules developers don't need
* This is an internal function, Redis modules developers don't need
* to use it. */
* to use it. */
void RM_SetModuleAttribs(RedisModuleCtx *ctx, const char *name, int ver, int apiver){
void RM_SetModuleAttribs(RedisModuleCtx *ctx, const char *name, int ver, int apiver)
{
RedisModule *module;
RedisModule *module;
if (ctx->module != NULL) return;
if (ctx->module != NULL) return;
...
@@ -660,6 +660,19 @@ void RM_SetModuleAttribs(RedisModuleCtx *ctx, const char *name, int ver, int api
...
@@ -660,6 +660,19 @@ void RM_SetModuleAttribs(RedisModuleCtx *ctx, const char *name, int ver, int api
ctx->module = module;
ctx->module = module;
}
}
/* Return non-zero if the module name is busy.
* Otherwise zero is returned. */
int RM_IsModuleNameBusy(const char *name) {
sds modulename = sdsnew(name);
/* Check if the module name is busy. */
if (dictFind(modules,modulename) != NULL) {
sdsfree(modulename);
return 1;
}
return 0;
}
/* Return the current UNIX time in milliseconds. */
/* Return the current UNIX time in milliseconds. */
long long RM_Milliseconds(void) {
long long RM_Milliseconds(void) {
return mstime();
return mstime();
...
@@ -3910,6 +3923,7 @@ void moduleRegisterCoreAPI(void) {
...
@@ -3910,6 +3923,7 @@ void moduleRegisterCoreAPI(void) {
REGISTER_API(Strdup);
REGISTER_API(Strdup);
REGISTER_API(CreateCommand);
REGISTER_API(CreateCommand);
REGISTER_API(SetModuleAttribs);
REGISTER_API(SetModuleAttribs);
REGISTER_API(IsModuleNameBusy);
REGISTER_API(WrongArity);
REGISTER_API(WrongArity);
REGISTER_API(ReplyWithLongLong);
REGISTER_API(ReplyWithLongLong);
REGISTER_API(ReplyWithError);
REGISTER_API(ReplyWithError);
...
...
src/redismodule.h
View file @
0205dd01
...
@@ -143,7 +143,8 @@ void *REDISMODULE_API_FUNC(RedisModule_Calloc)(size_t nmemb, size_t size);
...
@@ -143,7 +143,8 @@ void *REDISMODULE_API_FUNC(RedisModule_Calloc)(size_t nmemb, size_t size);
char
*
REDISMODULE_API_FUNC
(
RedisModule_Strdup
)(
const
char
*
str
);
char
*
REDISMODULE_API_FUNC
(
RedisModule_Strdup
)(
const
char
*
str
);
int
REDISMODULE_API_FUNC
(
RedisModule_GetApi
)(
const
char
*
,
void
*
);
int
REDISMODULE_API_FUNC
(
RedisModule_GetApi
)(
const
char
*
,
void
*
);
int
REDISMODULE_API_FUNC
(
RedisModule_CreateCommand
)(
RedisModuleCtx
*
ctx
,
const
char
*
name
,
RedisModuleCmdFunc
cmdfunc
,
const
char
*
strflags
,
int
firstkey
,
int
lastkey
,
int
keystep
);
int
REDISMODULE_API_FUNC
(
RedisModule_CreateCommand
)(
RedisModuleCtx
*
ctx
,
const
char
*
name
,
RedisModuleCmdFunc
cmdfunc
,
const
char
*
strflags
,
int
firstkey
,
int
lastkey
,
int
keystep
);
int
REDISMODULE_API_FUNC
(
RedisModule_SetModuleAttribs
)(
RedisModuleCtx
*
ctx
,
const
char
*
name
,
int
ver
,
int
apiver
);
void
REDISMODULE_API_FUNC
(
RedisModule_SetModuleAttribs
)(
RedisModuleCtx
*
ctx
,
const
char
*
name
,
int
ver
,
int
apiver
);
int
REDISMODULE_API_FUNC
(
RedisModule_IsModuleNameBusy
)(
const
char
*
name
);
int
REDISMODULE_API_FUNC
(
RedisModule_WrongArity
)(
RedisModuleCtx
*
ctx
);
int
REDISMODULE_API_FUNC
(
RedisModule_WrongArity
)(
RedisModuleCtx
*
ctx
);
int
REDISMODULE_API_FUNC
(
RedisModule_ReplyWithLongLong
)(
RedisModuleCtx
*
ctx
,
long
long
ll
);
int
REDISMODULE_API_FUNC
(
RedisModule_ReplyWithLongLong
)(
RedisModuleCtx
*
ctx
,
long
long
ll
);
int
REDISMODULE_API_FUNC
(
RedisModule_GetSelectedDb
)(
RedisModuleCtx
*
ctx
);
int
REDISMODULE_API_FUNC
(
RedisModule_GetSelectedDb
)(
RedisModuleCtx
*
ctx
);
...
@@ -263,6 +264,7 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
...
@@ -263,6 +264,7 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
REDISMODULE_GET_API
(
Strdup
);
REDISMODULE_GET_API
(
Strdup
);
REDISMODULE_GET_API
(
CreateCommand
);
REDISMODULE_GET_API
(
CreateCommand
);
REDISMODULE_GET_API
(
SetModuleAttribs
);
REDISMODULE_GET_API
(
SetModuleAttribs
);
REDISMODULE_GET_API
(
IsModuleNameBusy
);
REDISMODULE_GET_API
(
WrongArity
);
REDISMODULE_GET_API
(
WrongArity
);
REDISMODULE_GET_API
(
ReplyWithLongLong
);
REDISMODULE_GET_API
(
ReplyWithLongLong
);
REDISMODULE_GET_API
(
ReplyWithError
);
REDISMODULE_GET_API
(
ReplyWithError
);
...
@@ -370,6 +372,7 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
...
@@ -370,6 +372,7 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
REDISMODULE_GET_API
(
AbortBlock
);
REDISMODULE_GET_API
(
AbortBlock
);
#endif
#endif
if
(
RedisModule_IsModuleNameBusy
(
name
))
return
REDISMODULE_ERR
;
RedisModule_SetModuleAttribs
(
ctx
,
name
,
ver
,
apiver
);
RedisModule_SetModuleAttribs
(
ctx
,
name
,
ver
,
apiver
);
return
REDISMODULE_OK
;
return
REDISMODULE_OK
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment