mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-22 16:18:28 -05:00
Remove the NOTIFY_MODULE flag and simplify the module notification flow if there aren't subscribers
This commit is contained in:
parent
a8e2e99a88
commit
3aab12414f
10
src/module.c
10
src/module.c
@ -3748,8 +3748,6 @@ int RM_SubscribeToKeyspaceEvents(RedisModuleCtx *ctx, int types, RedisModuleNoti
|
||||
sub->notify_callback = callback;
|
||||
sub->active = 0;
|
||||
|
||||
/* Let the notification system know that modules are interested in notifications */
|
||||
server.notify_keyspace_events |= NOTIFY_MODULE;
|
||||
listAddNodeTail(moduleKeyspaceSubscribers, sub);
|
||||
return REDISMODULE_OK;
|
||||
|
||||
@ -3759,6 +3757,10 @@ int RM_SubscribeToKeyspaceEvents(RedisModuleCtx *ctx, int types, RedisModuleNoti
|
||||
* This gets called only if at least one module requested to be notified on
|
||||
* keyspace notifications */
|
||||
void moduleNotifyKeyspaceEvent(int type, const char *event, robj *key, int dbid) {
|
||||
|
||||
/* Don't do anything if there aren't any subscribers */
|
||||
if (listLength(moduleKeyspaceSubscribers) == 0) return;
|
||||
|
||||
listIter li;
|
||||
listNode *ln;
|
||||
|
||||
@ -3805,10 +3807,6 @@ void moduleUnsubscribeNotifications(RedisModule *module) {
|
||||
zfree(sub);
|
||||
}
|
||||
}
|
||||
/* If no subscribers are left - do not call the module norification function */
|
||||
if (listLength(moduleKeyspaceSubscribers) == 0) {
|
||||
server.notify_keyspace_events &= ~NOTIFY_MODULE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -104,8 +104,7 @@ void notifyKeyspaceEvent(int type, char *event, robj *key, int dbid) {
|
||||
* This bypasses the notifications configuration, but the module engine
|
||||
* will only call event subscribers if the event type matches the types
|
||||
* they are interested in. */
|
||||
if (server.notify_keyspace_events & NOTIFY_MODULE)
|
||||
moduleNotifyKeyspaceEvent(type, event, key, dbid);
|
||||
moduleNotifyKeyspaceEvent(type, event, key, dbid);
|
||||
|
||||
/* If notifications for this class of events are off, return ASAP. */
|
||||
if (!(server.notify_keyspace_events & type)) return;
|
||||
|
@ -429,7 +429,6 @@ typedef long long mstime_t; /* millisecond time type. */
|
||||
#define NOTIFY_EXPIRED (1<<8) /* x */
|
||||
#define NOTIFY_EVICTED (1<<9) /* e */
|
||||
#define NOTIFY_STREAM (1<<10) /* t */
|
||||
#define NOTIFY_MODULE (1<<11) /* modules are interested in notifications */
|
||||
#define NOTIFY_ALL (NOTIFY_GENERIC | NOTIFY_STRING | NOTIFY_LIST | NOTIFY_SET | NOTIFY_HASH | NOTIFY_ZSET | NOTIFY_EXPIRED | NOTIFY_EVICTED | NOTIFY_STREAM) /* A flag */
|
||||
|
||||
/* Get the first bind addr or NULL */
|
||||
|
Loading…
Reference in New Issue
Block a user