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
Show 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
*
* This is an internal function, Redis modules developers don't need
* 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
;
if
(
ctx
->
module
!=
NULL
)
return
;
...
...
@@ -660,6 +660,19 @@ void RM_SetModuleAttribs(RedisModuleCtx *ctx, const char *name, int ver, int api
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. */
long
long
RM_Milliseconds
(
void
)
{
return
mstime
();
...
...
@@ -3910,6 +3923,7 @@ void moduleRegisterCoreAPI(void) {
REGISTER_API
(
Strdup
);
REGISTER_API
(
CreateCommand
);
REGISTER_API
(
SetModuleAttribs
);
REGISTER_API
(
IsModuleNameBusy
);
REGISTER_API
(
WrongArity
);
REGISTER_API
(
ReplyWithLongLong
);
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);
char
*
REDISMODULE_API_FUNC
(
RedisModule_Strdup
)(
const
char
*
str
);
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_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_ReplyWithLongLong
)(
RedisModuleCtx
*
ctx
,
long
long
ll
);
int
REDISMODULE_API_FUNC
(
RedisModule_GetSelectedDb
)(
RedisModuleCtx
*
ctx
);
...
...
@@ -263,6 +264,7 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
REDISMODULE_GET_API
(
Strdup
);
REDISMODULE_GET_API
(
CreateCommand
);
REDISMODULE_GET_API
(
SetModuleAttribs
);
REDISMODULE_GET_API
(
IsModuleNameBusy
);
REDISMODULE_GET_API
(
WrongArity
);
REDISMODULE_GET_API
(
ReplyWithLongLong
);
REDISMODULE_GET_API
(
ReplyWithError
);
...
...
@@ -370,6 +372,7 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
REDISMODULE_GET_API
(
AbortBlock
);
#endif
if
(
RedisModule_IsModuleNameBusy
(
name
))
return
REDISMODULE_ERR
;
RedisModule_SetModuleAttribs
(
ctx
,
name
,
ver
,
apiver
);
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