Modules TSC: HELLO.KEYS reply format fixed.

This commit is contained in:
antirez 2017-05-03 23:43:49 +02:00
parent 9b01b64430
commit 7d9326b1f3

View File

@ -115,7 +115,7 @@ int HelloBlock_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int a
void *HelloKeys_ThreadMain(void *arg) { void *HelloKeys_ThreadMain(void *arg) {
RedisModuleBlockedClient *bc = arg; RedisModuleBlockedClient *bc = arg;
RedisModuleCtx *ctx = RedisModule_GetThreadSafeContext(bc); RedisModuleCtx *ctx = RedisModule_GetThreadSafeContext(bc);
long long cursor = 1; long long cursor = 0;
size_t replylen = 0; size_t replylen = 0;
RedisModule_ReplyWithArray(ctx,REDISMODULE_POSTPONED_ARRAY_LEN); RedisModule_ReplyWithArray(ctx,REDISMODULE_POSTPONED_ARRAY_LEN);
@ -125,20 +125,22 @@ void *HelloKeys_ThreadMain(void *arg) {
"SCAN","l",(long long)cursor); "SCAN","l",(long long)cursor);
RedisModule_ThreadSafeContextUnlock(ctx); RedisModule_ThreadSafeContextUnlock(ctx);
size_t items = RedisModule_CallReplyLength(reply); RedisModuleCallReply *cr_cursor =
size_t j; RedisModule_CallReplyArrayElement(reply,0);
for (j = 0; j < items; j++) { RedisModuleCallReply *cr_keys =
RedisModuleCallReply *ele = RedisModule_CallReplyArrayElement(reply,1);
RedisModule_CallReplyArrayElement(reply,j);
if (j == 0) { RedisModuleString *s = RedisModule_CreateStringFromCallReply(cr_cursor);
RedisModuleString *s = RedisModule_CreateStringFromCallReply(ele);
RedisModule_StringToLongLong(s,&cursor); RedisModule_StringToLongLong(s,&cursor);
RedisModule_FreeString(ctx,s); RedisModule_FreeString(ctx,s);
} else {
size_t items = RedisModule_CallReplyLength(cr_keys);
for (size_t j = 0; j < items; j++) {
RedisModuleCallReply *ele =
RedisModule_CallReplyArrayElement(cr_keys,j);
RedisModule_ReplyWithCallReply(ctx,ele); RedisModule_ReplyWithCallReply(ctx,ele);
replylen++; replylen++;
} }
}
RedisModule_FreeCallReply(reply); RedisModule_FreeCallReply(reply);
} while (cursor != 0); } while (cursor != 0);
RedisModule_ReplySetArrayLength(ctx,replylen); RedisModule_ReplySetArrayLength(ctx,replylen);