Software /
code /
prosody
Comparison
util/pubsub.lua @ 10518:9f50489c2033 0.11
util.pubsub: Factor out calling of broadcaster
This will simplify doing things along with broadcasting.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 06 Jun 2019 17:37:15 +0200 |
parent | 9840:ec353524b739 |
child | 10519:641e3b7a6a39 |
comparison
equal
deleted
inserted
replaced
10439:97c0f5fe5f41 | 10518:9f50489c2033 |
---|---|
497 return ok, err; | 497 return ok, err; |
498 end | 498 end |
499 end | 499 end |
500 | 500 |
501 self.events.fire_event("node-deleted", { service = self, node = node, actor = actor }); | 501 self.events.fire_event("node-deleted", { service = self, node = node, actor = actor }); |
502 self.config.broadcaster("delete", node, node_obj.subscribers, nil, actor, node_obj, self); | 502 self:broadcast("delete", node, node_obj.subscribers, nil, actor, node_obj); |
503 return true; | 503 return true; |
504 end | 504 end |
505 | 505 |
506 -- Used to check that the config of a node is as expected (i.e. 'publish-options') | 506 -- Used to check that the config of a node is as expected (i.e. 'publish-options') |
507 local function check_preconditions(node_config, required_config) | 507 local function check_preconditions(node_config, required_config) |
560 end | 560 end |
561 if type(ok) == "string" then id = ok; end | 561 if type(ok) == "string" then id = ok; end |
562 local event_data = { service = self, node = node, actor = actor, id = id, item = item }; | 562 local event_data = { service = self, node = node, actor = actor, id = id, item = item }; |
563 self.events.fire_event("item-published/"..node, event_data); | 563 self.events.fire_event("item-published/"..node, event_data); |
564 self.events.fire_event("item-published", event_data); | 564 self.events.fire_event("item-published", event_data); |
565 self.config.broadcaster("items", node, node_obj.subscribers, item, actor, node_obj, self); | 565 self:broadcast("items", node, node_obj.subscribers, item, actor, node_obj); |
566 return true; | 566 return true; |
567 end | |
568 | |
569 function service:broadcast(event, node, subscribers, item, actor, node_obj) | |
570 return self.config.broadcaster(event, node, subscribers, item, actor, node_obj, self); | |
567 end | 571 end |
568 | 572 |
569 function service:retract(node, actor, id, retract) --> ok, err | 573 function service:retract(node, actor, id, retract) --> ok, err |
570 -- Access checking | 574 -- Access checking |
571 if not self:may(node, actor, "retract") then | 575 if not self:may(node, actor, "retract") then |
580 if not ok then | 584 if not ok then |
581 return nil, "internal-server-error"; | 585 return nil, "internal-server-error"; |
582 end | 586 end |
583 self.events.fire_event("item-retracted", { service = self, node = node, actor = actor, id = id }); | 587 self.events.fire_event("item-retracted", { service = self, node = node, actor = actor, id = id }); |
584 if retract then | 588 if retract then |
585 self.config.broadcaster("retract", node, node_obj.subscribers, retract, actor, node_obj, self); | 589 self:broadcast("retract", node, node_obj.subscribers, retract, actor, node_obj); |
586 end | 590 end |
587 return true | 591 return true |
588 end | 592 end |
589 | 593 |
590 function service:purge(node, actor, notify) --> ok, err | 594 function service:purge(node, actor, notify) --> ok, err |
602 else | 606 else |
603 self.data[node] = self.config.itemstore(self.nodes[node].config, node); | 607 self.data[node] = self.config.itemstore(self.nodes[node].config, node); |
604 end | 608 end |
605 self.events.fire_event("node-purged", { service = self, node = node, actor = actor }); | 609 self.events.fire_event("node-purged", { service = self, node = node, actor = actor }); |
606 if notify then | 610 if notify then |
607 self.config.broadcaster("purge", node, node_obj.subscribers, nil, actor, node_obj, self); | 611 self:broadcast("purge", node, node_obj.subscribers, nil, actor, node_obj); |
608 end | 612 end |
609 return true | 613 return true |
610 end | 614 end |
611 | 615 |
612 function service:get_items(node, actor, ids) --> (true, { id, [id] = node }) or (false, err) | 616 function service:get_items(node, actor, ids) --> (true, { id, [id] = node }) or (false, err) |