RESP3: Use new deferred len API in server.c.

This commit is contained in:
antirez 2018-11-08 13:05:50 +01:00
parent 57c5a766a2
commit 073293693e
2 changed files with 13 additions and 8 deletions

View File

@ -2940,7 +2940,7 @@ void timeCommand(client *c) {
/* gettimeofday() can only fail if &tv is a bad address so we /* gettimeofday() can only fail if &tv is a bad address so we
* don't check for errors. */ * don't check for errors. */
gettimeofday(&tv,NULL); gettimeofday(&tv,NULL);
addReplyMultiBulkLen(c,2); addReplyArrayLen(c,2);
addReplyBulkLongLong(c,tv.tv_sec); addReplyBulkLongLong(c,tv.tv_sec);
addReplyBulkLongLong(c,tv.tv_usec); addReplyBulkLongLong(c,tv.tv_usec);
} }
@ -2960,12 +2960,12 @@ void addReplyCommand(client *c, struct redisCommand *cmd) {
addReply(c, shared.nullbulk); addReply(c, shared.nullbulk);
} else { } else {
/* We are adding: command name, arg count, flags, first, last, offset */ /* We are adding: command name, arg count, flags, first, last, offset */
addReplyMultiBulkLen(c, 6); addReplyArrayLen(c, 6);
addReplyBulkCString(c, cmd->name); addReplyBulkCString(c, cmd->name);
addReplyLongLong(c, cmd->arity); addReplyLongLong(c, cmd->arity);
int flagcount = 0; int flagcount = 0;
void *flaglen = addDeferredMultiBulkLength(c); void *flaglen = addReplyDeferredLen(c);
flagcount += addReplyCommandFlag(c,cmd,CMD_WRITE, "write"); flagcount += addReplyCommandFlag(c,cmd,CMD_WRITE, "write");
flagcount += addReplyCommandFlag(c,cmd,CMD_READONLY, "readonly"); flagcount += addReplyCommandFlag(c,cmd,CMD_READONLY, "readonly");
flagcount += addReplyCommandFlag(c,cmd,CMD_DENYOOM, "denyoom"); flagcount += addReplyCommandFlag(c,cmd,CMD_DENYOOM, "denyoom");
@ -2985,7 +2985,7 @@ void addReplyCommand(client *c, struct redisCommand *cmd) {
addReplyStatus(c, "movablekeys"); addReplyStatus(c, "movablekeys");
flagcount += 1; flagcount += 1;
} }
setDeferredMultiBulkLength(c, flaglen, flagcount); setDeferredSetLen(c, flaglen, flagcount);
addReplyLongLong(c, cmd->firstkey); addReplyLongLong(c, cmd->firstkey);
addReplyLongLong(c, cmd->lastkey); addReplyLongLong(c, cmd->lastkey);
@ -3008,7 +3008,7 @@ NULL
}; };
addReplyHelp(c, help); addReplyHelp(c, help);
} else if (c->argc == 1) { } else if (c->argc == 1) {
addReplyMultiBulkLen(c, dictSize(server.commands)); addReplyArrayLen(c, dictSize(server.commands));
di = dictGetIterator(server.commands); di = dictGetIterator(server.commands);
while ((de = dictNext(di)) != NULL) { while ((de = dictNext(di)) != NULL) {
addReplyCommand(c, dictGetVal(de)); addReplyCommand(c, dictGetVal(de));
@ -3016,7 +3016,7 @@ NULL
dictReleaseIterator(di); dictReleaseIterator(di);
} else if (!strcasecmp(c->argv[1]->ptr, "info")) { } else if (!strcasecmp(c->argv[1]->ptr, "info")) {
int i; int i;
addReplyMultiBulkLen(c, c->argc-2); addReplyArrayLen(c, c->argc-2);
for (i = 2; i < c->argc; i++) { for (i = 2; i < c->argc; i++) {
addReplyCommand(c, dictFetchValue(server.commands, c->argv[i]->ptr)); addReplyCommand(c, dictFetchValue(server.commands, c->argv[i]->ptr));
} }
@ -3043,7 +3043,7 @@ NULL
if (!keys) { if (!keys) {
addReplyError(c,"Invalid arguments specified for command"); addReplyError(c,"Invalid arguments specified for command");
} else { } else {
addReplyMultiBulkLen(c,numkeys); addReplyArrayLen(c,numkeys);
for (j = 0; j < numkeys; j++) addReplyBulk(c,c->argv[keys[j]+2]); for (j = 0; j < numkeys; j++) addReplyBulk(c,c->argv[keys[j]+2]);
getKeysFreeResult(keys); getKeysFreeResult(keys);
} }

View File

@ -1450,7 +1450,12 @@ void addReplyStatus(client *c, const char *status);
void addReplyDouble(client *c, double d); void addReplyDouble(client *c, double d);
void addReplyHumanLongDouble(client *c, long double d); void addReplyHumanLongDouble(client *c, long double d);
void addReplyLongLong(client *c, long long ll); void addReplyLongLong(client *c, long long ll);
void addReplyMultiBulkLen(client *c, long length); void addReplyArrayLen(client *c, long length);
void addReplyMapLen(client *c, long length);
void addReplySetLen(client *c, long length);
void addReplyAttributeLen(client *c, long length);
void addReplyPushLen(client *c, long length);
void addReplyHelloLen(client *c, long length);
void addReplyHelp(client *c, const char **help); void addReplyHelp(client *c, const char **help);
void addReplySubcommandSyntaxError(client *c); void addReplySubcommandSyntaxError(client *c);
void copyClientOutputBuffer(client *dst, client *src); void copyClientOutputBuffer(client *dst, client *src);