Skip to content

Add module API flag for using enum configs as bit flags#10643

Merged
oranagra merged 2 commits intoredis:unstablefrom
oranagra:module_enum_flags
Apr 26, 2022
Merged

Add module API flag for using enum configs as bit flags#10643
oranagra merged 2 commits intoredis:unstablefrom
oranagra:module_enum_flags

Conversation

@oranagra
Copy link
Copy Markdown
Member

@oranagra oranagra commented Apr 26, 2022

Enables registration of an enum config that'll let the user pass multiple keywords that will be combined with | as flags into the integer config value.

    const char *enum_vals[] = {"none", "one", "two", "three"};
    const int int_vals[] = {0, 1, 2, 4};

    if (RedisModule_RegisterEnumConfig(ctx, "flags", 3, REDISMODULE_CONFIG_DEFAULT | REDISMODULE_CONFIG_BITFLAGS, enum_vals, int_vals, 4, getFlagsConfigCommand, setFlagsConfigCommand, NULL, NULL) == REDISMODULE_ERR) {
        return REDISMODULE_ERR;
    }

doing:
config set moduleconfigs.flags "two three" will result in 6 being passed tosetFlagsConfigCommand.

@oranagra oranagra added state:major-decision Requires core team consensus 7.0-must-have labels Apr 26, 2022
@oranagra oranagra requested a review from yossigo April 26, 2022 11:56
Comment thread src/config.c Outdated
Co-authored-by: Madelyn Olson <[email protected]>
@oranagra oranagra merged commit 8192625 into redis:unstable Apr 26, 2022
@oranagra oranagra deleted the module_enum_flags branch April 26, 2022 17:29
@oranagra oranagra added the release-notes indication that this issue needs to be mentioned in the release notes label Apr 26, 2022
enjoy-binbin pushed a commit to enjoy-binbin/redis that referenced this pull request Jul 31, 2023
Enables registration of an enum config that'll let the user pass multiple keywords that
will be combined with `|` as flags into the integer config value.

```
    const char *enum_vals[] = {"none", "one", "two", "three"};
    const int int_vals[] = {0, 1, 2, 4};

    if (RedisModule_RegisterEnumConfig(ctx, "flags", 3, REDISMODULE_CONFIG_DEFAULT | REDISMODULE_CONFIG_BITFLAGS, enum_vals, int_vals, 4, getFlagsConfigCommand, setFlagsConfigCommand, NULL, NULL) == REDISMODULE_ERR) {
        return REDISMODULE_ERR;
    }
```
doing:
`config set moduleconfigs.flags "two three"` will result in 6 being passed to`setFlagsConfigCommand`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release-notes indication that this issue needs to be mentioned in the release notes state:major-decision Requires core team consensus

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

3 participants