X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=redismodule%2Fsrc%2Fexstrings.c;h=194edc5041d4de415e14976ea89770e835296c33;hb=24b73dac134d27649cb18c571f774011865debbb;hp=65708891ee0348489f786ac2e338344b088e41d2;hpb=473aa4ed7f319010a5a6f55669ebece78761b3f6;p=ric-plt%2Fdbaas.git diff --git a/redismodule/src/exstrings.c b/redismodule/src/exstrings.c index 6570889..194edc5 100755 --- a/redismodule/src/exstrings.c +++ b/redismodule/src/exstrings.c @@ -14,6 +14,11 @@ * limitations under the License. */ +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + #include "redismodule.h" #include #include @@ -506,6 +511,35 @@ int DelPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) return delPubStringCommon(ctx, &delParams, &pubParams); } +int DelMPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) +{ + if (argc < 6) + return RedisModule_WrongArity(ctx); + + long long delCount, pubPairsCount; + RedisModule_StringToLongLong(argv[1], &delCount); + RedisModule_StringToLongLong(argv[2], &pubPairsCount); + if (delCount < 1 || pubPairsCount < 1) + return RedisModule_ReplyWithError(ctx, "ERR DEL_COUNT and PUB_PAIR_COUNT must be greater than zero"); + + long long delLen, pubLen; + delLen = delCount; + pubLen = 2*pubPairsCount; + if (delLen + pubLen + 3 != argc) + return RedisModule_ReplyWithError(ctx, "ERR DEL_COUNT or PUB_PAIR_COUNT do not match the total pair count"); + + DelParams delParams = { + .keys = argv + 3, + .length = delLen + }; + PubParams pubParams = { + .channel_msg_pairs = argv + 3 + delParams.length, + .length = pubLen + }; + + return delPubStringCommon(ctx, &delParams, &pubParams); +} + int delIENEPubStringCommon(RedisModuleCtx *ctx, RedisModuleString **argv, int argc, int flag) { if (argc < 5 || (argc % 2) == 0) @@ -612,6 +646,10 @@ int RedisModule_OnLoad(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) DelPub_RedisCommand,"write deny-oom",1,1,1) == REDISMODULE_ERR) return REDISMODULE_ERR; + if (RedisModule_CreateCommand(ctx,"delmpub", + DelMPub_RedisCommand,"write deny-oom pubsub",1,1,1) == REDISMODULE_ERR) + return REDISMODULE_ERR; + if (RedisModule_CreateCommand(ctx,"deliepub", DelIEPub_RedisCommand,"write deny-oom",1,1,1) == REDISMODULE_ERR) return REDISMODULE_ERR;