mirror of
https://github.com/fluencelabs/redis
synced 2025-03-19 17:10:50 +00:00
RESP3: verbatim reply API + DEBUG PROTOCOL support.
This commit is contained in:
parent
afba211297
commit
e291170385
@ -576,6 +576,8 @@ NULL
|
|||||||
addReplyBool(c,1);
|
addReplyBool(c,1);
|
||||||
} else if (!strcasecmp(name,"false")) {
|
} else if (!strcasecmp(name,"false")) {
|
||||||
addReplyBool(c,0);
|
addReplyBool(c,0);
|
||||||
|
} else if (!strcasecmp(name,"verbatim")) {
|
||||||
|
addReplyVerbatim(c,"This is a verbatim\nstring",25,"txt");
|
||||||
} else {
|
} else {
|
||||||
addReplyError(c,"Wrong protocol type name. Please use one of the following: string|integer|double|bignum|null|array|set|map|attrib|push|verbatim|true|false|state|err|bloberr");
|
addReplyError(c,"Wrong protocol type name. Please use one of the following: string|integer|double|bignum|null|array|set|map|attrib|push|verbatim|true|false|state|err|bloberr");
|
||||||
}
|
}
|
||||||
|
@ -696,6 +696,35 @@ void addReplyBulkLongLong(client *c, long long ll) {
|
|||||||
addReplyBulkCBuffer(c,buf,len);
|
addReplyBulkCBuffer(c,buf,len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Reply with a verbatim type having the specified extension.
|
||||||
|
*
|
||||||
|
* The 'ext' is the "extension" of the file, actually just a three
|
||||||
|
* character type that describes the format of the verbatim string.
|
||||||
|
* For instance "txt" means it should be interpreted as a text only
|
||||||
|
* file by the receiver, "md " as markdown, and so forth. Only the
|
||||||
|
* three first characters of the extension are used, and if the
|
||||||
|
* provided one is shorter than that, the remaining is filled with
|
||||||
|
* spaces. */
|
||||||
|
void addReplyVerbatim(client *c, const char *s, size_t len, const char *ext) {
|
||||||
|
if (c->resp == 2) {
|
||||||
|
addReplyBulkCBuffer(c,s,len);
|
||||||
|
} else {
|
||||||
|
char buf[32];
|
||||||
|
size_t preflen = snprintf(buf,sizeof(buf),"=%zu\r\nxxx:",len+4);
|
||||||
|
char *p = buf+preflen-4;
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
if (*ext == '\0') {
|
||||||
|
p[i] = ' ';
|
||||||
|
} else {
|
||||||
|
p[i] = *ext++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
addReplyString(c,buf,preflen);
|
||||||
|
addReplyString(c,s,len);
|
||||||
|
addReplyString(c,"\r\n",2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Add an array of C strings as status replies with a heading.
|
/* Add an array of C strings as status replies with a heading.
|
||||||
* This function is typically invoked by from commands that support
|
* This function is typically invoked by from commands that support
|
||||||
* subcommands in response to the 'help' subcommand. The help array
|
* subcommands in response to the 'help' subcommand. The help array
|
||||||
|
@ -1440,6 +1440,7 @@ void readQueryFromClient(aeEventLoop *el, int fd, void *privdata, int mask);
|
|||||||
void addReplyNull(client *c);
|
void addReplyNull(client *c);
|
||||||
void addReplyNullArray(client *c);
|
void addReplyNullArray(client *c);
|
||||||
void addReplyBool(client *c, int b);
|
void addReplyBool(client *c, int b);
|
||||||
|
void addReplyVerbatim(client *c, const char *s, size_t len, const char *ext);
|
||||||
void addReplyString(client *c, const char *s, size_t len);
|
void addReplyString(client *c, const char *s, size_t len);
|
||||||
void addReplyBulk(client *c, robj *obj);
|
void addReplyBulk(client *c, robj *obj);
|
||||||
void addReplyBulkCString(client *c, const char *s);
|
void addReplyBulkCString(client *c, const char *s);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user