RESP3: extract code to send pubsub messages into functions.
This commit is contained in:
parent
5190cbe08f
commit
67a6fe1dc7
35
src/pubsub.c
35
src/pubsub.c
@ -221,6 +221,25 @@ int pubsubUnsubscribeAllPatterns(client *c, int notify) {
|
|||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Send a pubsub message of type "message" to the client. */
|
||||||
|
void addReplyPubsubMessage(client *c, robj *channel, robj *msg) {
|
||||||
|
addReply(c,shared.mbulkhdr[3]);
|
||||||
|
addReply(c,shared.messagebulk);
|
||||||
|
addReplyBulk(c,channel);
|
||||||
|
addReplyBulk(c,msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Send a pubsub message of type "pmessage" to the client. The difference
|
||||||
|
* with the "message" type delivered by addReplyPubsubMessage() is that
|
||||||
|
* this message format also includes the pattern that matched the message. */
|
||||||
|
void addReplyPubsubPatMessage(client *c, robj *pat, robj *channel, robj *msg) {
|
||||||
|
addReply(c,shared.mbulkhdr[4]);
|
||||||
|
addReply(c,shared.pmessagebulk);
|
||||||
|
addReplyBulk(c,pat);
|
||||||
|
addReplyBulk(c,channel);
|
||||||
|
addReplyBulk(c,msg);
|
||||||
|
}
|
||||||
|
|
||||||
/* Publish a message */
|
/* Publish a message */
|
||||||
int pubsubPublishMessage(robj *channel, robj *message) {
|
int pubsubPublishMessage(robj *channel, robj *message) {
|
||||||
int receivers = 0;
|
int receivers = 0;
|
||||||
@ -238,11 +257,7 @@ int pubsubPublishMessage(robj *channel, robj *message) {
|
|||||||
listRewind(list,&li);
|
listRewind(list,&li);
|
||||||
while ((ln = listNext(&li)) != NULL) {
|
while ((ln = listNext(&li)) != NULL) {
|
||||||
client *c = ln->value;
|
client *c = ln->value;
|
||||||
|
addReplyPubsubMessage(c,channel,message);
|
||||||
addReply(c,shared.mbulkhdr[3]);
|
|
||||||
addReply(c,shared.messagebulk);
|
|
||||||
addReplyBulk(c,channel);
|
|
||||||
addReplyBulk(c,message);
|
|
||||||
receivers++;
|
receivers++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -256,12 +271,10 @@ int pubsubPublishMessage(robj *channel, robj *message) {
|
|||||||
if (stringmatchlen((char*)pat->pattern->ptr,
|
if (stringmatchlen((char*)pat->pattern->ptr,
|
||||||
sdslen(pat->pattern->ptr),
|
sdslen(pat->pattern->ptr),
|
||||||
(char*)channel->ptr,
|
(char*)channel->ptr,
|
||||||
sdslen(channel->ptr),0)) {
|
sdslen(channel->ptr),0))
|
||||||
addReply(pat->client,shared.mbulkhdr[4]);
|
{
|
||||||
addReply(pat->client,shared.pmessagebulk);
|
addReplyPubsubPatMessage(pat->client,
|
||||||
addReplyBulk(pat->client,pat->pattern);
|
pat->pattern,channel,message);
|
||||||
addReplyBulk(pat->client,channel);
|
|
||||||
addReplyBulk(pat->client,message);
|
|
||||||
receivers++;
|
receivers++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user