Mercurial > prosody-hg
comparison util/pubsub.lua @ 10519:641e3b7a6a39 0.11
util.pubsub: Pass subscribers trough a filter callback
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Thu, 06 Jun 2019 18:13:46 +0200 |
| parents | 9f50489c2033 |
| children | cbb2c3f8bb1d 087b275a9aee |
comparison
equal
deleted
inserted
replaced
| 10518:9f50489c2033 | 10519:641e3b7a6a39 |
|---|---|
| 4 local service_mt = {}; | 4 local service_mt = {}; |
| 5 | 5 |
| 6 local default_config = { | 6 local default_config = { |
| 7 itemstore = function (config, _) return cache.new(config["max_items"]) end; | 7 itemstore = function (config, _) return cache.new(config["max_items"]) end; |
| 8 broadcaster = function () end; | 8 broadcaster = function () end; |
| 9 subscriber_filter = function (subs) return subs end; | |
| 9 itemcheck = function () return true; end; | 10 itemcheck = function () return true; end; |
| 10 get_affiliation = function () end; | 11 get_affiliation = function () end; |
| 11 normalize_jid = function (jid) return jid; end; | 12 normalize_jid = function (jid) return jid; end; |
| 12 capabilities = { | 13 capabilities = { |
| 13 outcast = { | 14 outcast = { |
| 565 self:broadcast("items", node, node_obj.subscribers, item, actor, node_obj); | 566 self:broadcast("items", node, node_obj.subscribers, item, actor, node_obj); |
| 566 return true; | 567 return true; |
| 567 end | 568 end |
| 568 | 569 |
| 569 function service:broadcast(event, node, subscribers, item, actor, node_obj) | 570 function service:broadcast(event, node, subscribers, item, actor, node_obj) |
| 571 subscribers = self.config.subscriber_filter(subscribers, node, event); | |
| 570 return self.config.broadcaster(event, node, subscribers, item, actor, node_obj, self); | 572 return self.config.broadcaster(event, node, subscribers, item, actor, node_obj, self); |
| 571 end | 573 end |
| 572 | 574 |
| 573 function service:retract(node, actor, id, retract) --> ok, err | 575 function service:retract(node, actor, id, retract) --> ok, err |
| 574 -- Access checking | 576 -- Access checking |
