Tracking: always reply with an array of keys.
This commit is contained in:
parent
a788c373e6
commit
3e8c69a9de
@ -35,7 +35,11 @@ int clientSubscriptionsCount(client *c);
|
|||||||
* Pubsub client replies API
|
* Pubsub client replies API
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
/* Send a pubsub message of type "message" to the client. */
|
/* Send a pubsub message of type "message" to the client.
|
||||||
|
* Normally 'msg' is a Redis object containing the string to send as
|
||||||
|
* message. However if the caller sets 'msg' as NULL, it will be able
|
||||||
|
* to send a special message (for instance an Array type) by using the
|
||||||
|
* addReply*() API family. */
|
||||||
void addReplyPubsubMessage(client *c, robj *channel, robj *msg) {
|
void addReplyPubsubMessage(client *c, robj *channel, robj *msg) {
|
||||||
if (c->resp == 2)
|
if (c->resp == 2)
|
||||||
addReply(c,shared.mbulkhdr[3]);
|
addReply(c,shared.mbulkhdr[3]);
|
||||||
@ -43,7 +47,7 @@ void addReplyPubsubMessage(client *c, robj *channel, robj *msg) {
|
|||||||
addReplyPushLen(c,3);
|
addReplyPushLen(c,3);
|
||||||
addReply(c,shared.messagebulk);
|
addReply(c,shared.messagebulk);
|
||||||
addReplyBulk(c,channel);
|
addReplyBulk(c,channel);
|
||||||
addReplyBulk(c,msg);
|
if (msg) addReplyBulk(c,msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Send a pubsub message of type "pmessage" to the client. The difference
|
/* Send a pubsub message of type "pmessage" to the client. The difference
|
||||||
|
@ -132,13 +132,16 @@ void sendTrackingMessage(client *c, char *keyname, size_t keylen) {
|
|||||||
if (c->resp > 2) {
|
if (c->resp > 2) {
|
||||||
addReplyPushLen(c,2);
|
addReplyPushLen(c,2);
|
||||||
addReplyBulkCBuffer(c,"invalidate",10);
|
addReplyBulkCBuffer(c,"invalidate",10);
|
||||||
|
addReplyArrayLen(c,1);
|
||||||
addReplyBulkCBuffer(c,keyname,keylen);
|
addReplyBulkCBuffer(c,keyname,keylen);
|
||||||
} else if (using_redirection && c->flags & CLIENT_PUBSUB) {
|
} else if (using_redirection && c->flags & CLIENT_PUBSUB) {
|
||||||
/* We use a static object to speedup things, however we assume
|
/* We use a static object to speedup things, however we assume
|
||||||
* that addReplyPubsubMessage() will not take a reference. */
|
* that addReplyPubsubMessage() will not take a reference. */
|
||||||
robj keyobj;
|
robj keyobj;
|
||||||
initStaticStringObject(keyobj,keyname);
|
initStaticStringObject(keyobj,keyname);
|
||||||
addReplyPubsubMessage(c,TrackingChannelName,&keyobj);
|
addReplyPubsubMessage(c,TrackingChannelName,NULL);
|
||||||
|
addReplyArrayLen(c,1);
|
||||||
|
addReplyBulk(c,&keyobj);
|
||||||
serverAssert(keyobj.refcount == 1);
|
serverAssert(keyobj.refcount == 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user