moduleapi: Add module:broadcast() to send a stanza to a list of JIDs
authorMatthew Wild <mwild1@gmail.com>
Wed, 6 May 2015 17:37:46 +0000 (18:37 +0100)
committerMatthew Wild <mwild1@gmail.com>
Wed, 6 May 2015 17:37:46 +0000 (18:37 +0100)
core/moduleapi.lua

index f3326295b94b2b031137d5dbb7456958b8b921f3..c40363a124fe2287290b93528a9c92c82ab7ba14 100644 (file)
@@ -10,6 +10,7 @@ local config = require "core.configmanager";
 local modulemanager; -- This gets set from modulemanager
 local array = require "util.array";
 local set = require "util.set";
+local it = require "util.iterators";
 local logger = require "util.logger";
 local pluginloader = require "util.pluginloader";
 local timer = require "util.timer";
@@ -362,6 +363,14 @@ function api:send(stanza)
        return core_post_stanza(hosts[self.host], stanza);
 end
 
+function api:broadcast(jids, stanza, iter)
+       for jid in (iter or it.values)(jids) do
+               local new_stanza = st.clone(stanza);
+               new_stanza.attr.to = jid;
+               core_post_stanza(hosts[self.host], new_stanza);
+       end
+end
+
 function api:add_timer(delay, callback)
        return timer.add_task(delay, function (t)
                if self.loaded == false then return; end