Unverified Commit 49f7d173 authored by Roshan Khatri's avatar Roshan Khatri Committed by GitHub
Browse files

Remove unnecessary use of sds and mem copy in module.c (#12533)

Found that in moduleConfigValidityCheck and isModuleConfigNameRegistered, sds is not required. This also allowed to remove unnecessary memcopy from some of the config registering APIs.
parent 370d3801
......@@ -12447,7 +12447,7 @@ sds genModulesInfoString(sds info) {
* -------------------------------------------------------------------------- */
/* Check if the configuration name is already registered */
int isModuleConfigNameRegistered(RedisModule *module, sds name) {
int isModuleConfigNameRegistered(RedisModule *module, const char *name) {
listNode *match = listSearchKey(module->module_configs, (void *) name);
return match != NULL;
}
......@@ -12637,16 +12637,16 @@ int moduleConfigApplyConfig(list *module_configs, const char **err, const char *
* -------------------------------------------------------------------------- */
 
/* Create a module config object. */
ModuleConfig *createModuleConfig(sds name, RedisModuleConfigApplyFunc apply_fn, void *privdata, RedisModule *module) {
ModuleConfig *createModuleConfig(const char *name, RedisModuleConfigApplyFunc apply_fn, void *privdata, RedisModule *module) {
ModuleConfig *new_config = zmalloc(sizeof(ModuleConfig));
new_config->name = sdsdup(name);
new_config->name = sdsnew(name);
new_config->apply_fn = apply_fn;
new_config->privdata = privdata;
new_config->module = module;
return new_config;
}
 
int moduleConfigValidityCheck(RedisModule *module, sds name, unsigned int flags, configType type) {
int moduleConfigValidityCheck(RedisModule *module, const char *name, unsigned int flags, configType type) {
if (!module->onload) {
errno = EBUSY;
return REDISMODULE_ERR;
......@@ -12762,13 +12762,10 @@ unsigned int maskModuleEnumConfigFlags(unsigned int flags) {
* * EALREADY: The provided configuration name is already used. */
int RM_RegisterStringConfig(RedisModuleCtx *ctx, const char *name, const char *default_val, unsigned int flags, RedisModuleConfigGetStringFunc getfn, RedisModuleConfigSetStringFunc setfn, RedisModuleConfigApplyFunc applyfn, void *privdata) {
RedisModule *module = ctx->module;
sds config_name = sdsnew(name);
if (moduleConfigValidityCheck(module, config_name, flags, NUMERIC_CONFIG)) {
sdsfree(config_name);
if (moduleConfigValidityCheck(module, name, flags, NUMERIC_CONFIG)) {
return REDISMODULE_ERR;
}
ModuleConfig *new_config = createModuleConfig(config_name, applyfn, privdata, module);
sdsfree(config_name);
ModuleConfig *new_config = createModuleConfig(name, applyfn, privdata, module);
new_config->get_fn.get_string = getfn;
new_config->set_fn.set_string = setfn;
listAddNodeTail(module->module_configs, new_config);
......@@ -12782,13 +12779,10 @@ int RM_RegisterStringConfig(RedisModuleCtx *ctx, const char *name, const char *d
* RedisModule_RegisterStringConfig for detailed information about configs. */
int RM_RegisterBoolConfig(RedisModuleCtx *ctx, const char *name, int default_val, unsigned int flags, RedisModuleConfigGetBoolFunc getfn, RedisModuleConfigSetBoolFunc setfn, RedisModuleConfigApplyFunc applyfn, void *privdata) {
RedisModule *module = ctx->module;
sds config_name = sdsnew(name);
if (moduleConfigValidityCheck(module, config_name, flags, BOOL_CONFIG)) {
sdsfree(config_name);
if (moduleConfigValidityCheck(module, name, flags, BOOL_CONFIG)) {
return REDISMODULE_ERR;
}
ModuleConfig *new_config = createModuleConfig(config_name, applyfn, privdata, module);
sdsfree(config_name);
ModuleConfig *new_config = createModuleConfig(name, applyfn, privdata, module);
new_config->get_fn.get_bool = getfn;
new_config->set_fn.set_bool = setfn;
listAddNodeTail(module->module_configs, new_config);
......@@ -12828,13 +12822,10 @@ int RM_RegisterBoolConfig(RedisModuleCtx *ctx, const char *name, int default_val
* See RedisModule_RegisterStringConfig for detailed general information about configs. */
int RM_RegisterEnumConfig(RedisModuleCtx *ctx, const char *name, int default_val, unsigned int flags, const char **enum_values, const int *int_values, int num_enum_vals, RedisModuleConfigGetEnumFunc getfn, RedisModuleConfigSetEnumFunc setfn, RedisModuleConfigApplyFunc applyfn, void *privdata) {
RedisModule *module = ctx->module;
sds config_name = sdsnew(name);
if (moduleConfigValidityCheck(module, config_name, flags, ENUM_CONFIG)) {
sdsfree(config_name);
if (moduleConfigValidityCheck(module, name, flags, ENUM_CONFIG)) {
return REDISMODULE_ERR;
}
ModuleConfig *new_config = createModuleConfig(config_name, applyfn, privdata, module);
sdsfree(config_name);
ModuleConfig *new_config = createModuleConfig(name, applyfn, privdata, module);
new_config->get_fn.get_enum = getfn;
new_config->set_fn.set_enum = setfn;
configEnum *enum_vals = zmalloc((num_enum_vals + 1) * sizeof(configEnum));
......@@ -12856,13 +12847,10 @@ int RM_RegisterEnumConfig(RedisModuleCtx *ctx, const char *name, int default_val
* RedisModule_RegisterStringConfig for detailed information about configs. */
int RM_RegisterNumericConfig(RedisModuleCtx *ctx, const char *name, long long default_val, unsigned int flags, long long min, long long max, RedisModuleConfigGetNumericFunc getfn, RedisModuleConfigSetNumericFunc setfn, RedisModuleConfigApplyFunc applyfn, void *privdata) {
RedisModule *module = ctx->module;
sds config_name = sdsnew(name);
if (moduleConfigValidityCheck(module, config_name, flags, NUMERIC_CONFIG)) {
sdsfree(config_name);
if (moduleConfigValidityCheck(module, name, flags, NUMERIC_CONFIG)) {
return REDISMODULE_ERR;
}
ModuleConfig *new_config = createModuleConfig(config_name, applyfn, privdata, module);
sdsfree(config_name);
ModuleConfig *new_config = createModuleConfig(name, applyfn, privdata, module);
new_config->get_fn.get_numeric = getfn;
new_config->set_fn.set_numeric = setfn;
listAddNodeTail(module->module_configs, new_config);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment