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) { ...@@ -12447,7 +12447,7 @@ sds genModulesInfoString(sds info) {
* -------------------------------------------------------------------------- */ * -------------------------------------------------------------------------- */
/* Check if the configuration name is already registered */ /* 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); listNode *match = listSearchKey(module->module_configs, (void *) name);
return match != NULL; return match != NULL;
} }
...@@ -12637,16 +12637,16 @@ int moduleConfigApplyConfig(list *module_configs, const char **err, const char * ...@@ -12637,16 +12637,16 @@ int moduleConfigApplyConfig(list *module_configs, const char **err, const char *
* -------------------------------------------------------------------------- */ * -------------------------------------------------------------------------- */
   
/* Create a module config object. */ /* 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)); ModuleConfig *new_config = zmalloc(sizeof(ModuleConfig));
new_config->name = sdsdup(name); new_config->name = sdsnew(name);
new_config->apply_fn = apply_fn; new_config->apply_fn = apply_fn;
new_config->privdata = privdata; new_config->privdata = privdata;
new_config->module = module; new_config->module = module;
return new_config; 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) { if (!module->onload) {
errno = EBUSY; errno = EBUSY;
return REDISMODULE_ERR; return REDISMODULE_ERR;
...@@ -12762,13 +12762,10 @@ unsigned int maskModuleEnumConfigFlags(unsigned int flags) { ...@@ -12762,13 +12762,10 @@ unsigned int maskModuleEnumConfigFlags(unsigned int flags) {
* * EALREADY: The provided configuration name is already used. */ * * 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) { 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; RedisModule *module = ctx->module;
sds config_name = sdsnew(name); if (moduleConfigValidityCheck(module, name, flags, NUMERIC_CONFIG)) {
if (moduleConfigValidityCheck(module, config_name, flags, NUMERIC_CONFIG)) {
sdsfree(config_name);
return REDISMODULE_ERR; return REDISMODULE_ERR;
} }
ModuleConfig *new_config = createModuleConfig(config_name, applyfn, privdata, module); ModuleConfig *new_config = createModuleConfig(name, applyfn, privdata, module);
sdsfree(config_name);
new_config->get_fn.get_string = getfn; new_config->get_fn.get_string = getfn;
new_config->set_fn.set_string = setfn; new_config->set_fn.set_string = setfn;
listAddNodeTail(module->module_configs, new_config); listAddNodeTail(module->module_configs, new_config);
...@@ -12782,13 +12779,10 @@ int RM_RegisterStringConfig(RedisModuleCtx *ctx, const char *name, const char *d ...@@ -12782,13 +12779,10 @@ int RM_RegisterStringConfig(RedisModuleCtx *ctx, const char *name, const char *d
* RedisModule_RegisterStringConfig for detailed information about configs. */ * 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) { 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; RedisModule *module = ctx->module;
sds config_name = sdsnew(name); if (moduleConfigValidityCheck(module, name, flags, BOOL_CONFIG)) {
if (moduleConfigValidityCheck(module, config_name, flags, BOOL_CONFIG)) {
sdsfree(config_name);
return REDISMODULE_ERR; return REDISMODULE_ERR;
} }
ModuleConfig *new_config = createModuleConfig(config_name, applyfn, privdata, module); ModuleConfig *new_config = createModuleConfig(name, applyfn, privdata, module);
sdsfree(config_name);
new_config->get_fn.get_bool = getfn; new_config->get_fn.get_bool = getfn;
new_config->set_fn.set_bool = setfn; new_config->set_fn.set_bool = setfn;
listAddNodeTail(module->module_configs, new_config); listAddNodeTail(module->module_configs, new_config);
...@@ -12828,13 +12822,10 @@ int RM_RegisterBoolConfig(RedisModuleCtx *ctx, const char *name, int default_val ...@@ -12828,13 +12822,10 @@ int RM_RegisterBoolConfig(RedisModuleCtx *ctx, const char *name, int default_val
* See RedisModule_RegisterStringConfig for detailed general information about configs. */ * 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) { 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; RedisModule *module = ctx->module;
sds config_name = sdsnew(name); if (moduleConfigValidityCheck(module, name, flags, ENUM_CONFIG)) {
if (moduleConfigValidityCheck(module, config_name, flags, ENUM_CONFIG)) {
sdsfree(config_name);
return REDISMODULE_ERR; return REDISMODULE_ERR;
} }
ModuleConfig *new_config = createModuleConfig(config_name, applyfn, privdata, module); ModuleConfig *new_config = createModuleConfig(name, applyfn, privdata, module);
sdsfree(config_name);
new_config->get_fn.get_enum = getfn; new_config->get_fn.get_enum = getfn;
new_config->set_fn.set_enum = setfn; new_config->set_fn.set_enum = setfn;
configEnum *enum_vals = zmalloc((num_enum_vals + 1) * sizeof(configEnum)); 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 ...@@ -12856,13 +12847,10 @@ int RM_RegisterEnumConfig(RedisModuleCtx *ctx, const char *name, int default_val
* RedisModule_RegisterStringConfig for detailed information about configs. */ * 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) { 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; RedisModule *module = ctx->module;
sds config_name = sdsnew(name); if (moduleConfigValidityCheck(module, name, flags, NUMERIC_CONFIG)) {
if (moduleConfigValidityCheck(module, config_name, flags, NUMERIC_CONFIG)) {
sdsfree(config_name);
return REDISMODULE_ERR; return REDISMODULE_ERR;
} }
ModuleConfig *new_config = createModuleConfig(config_name, applyfn, privdata, module); ModuleConfig *new_config = createModuleConfig(name, applyfn, privdata, module);
sdsfree(config_name);
new_config->get_fn.get_numeric = getfn; new_config->get_fn.get_numeric = getfn;
new_config->set_fn.set_numeric = setfn; new_config->set_fn.set_numeric = setfn;
listAddNodeTail(module->module_configs, new_config); 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