Software /
code /
prosody-modules
Changeset
3624:3109a65ab7f4
mod_csi_pump: Obsolete, remove
Use mod_csi_simple instead, distributed with Prosody 0.11 and later.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 26 Jun 2019 21:45:50 +0200 |
parents | 3623:da2d58208574 |
children | 3625:a578b4977bb0 |
files | mod_csi_pump/README.markdown mod_csi_pump/mod_csi_pump.lua |
diffstat | 2 files changed, 0 insertions(+), 108 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_csi_pump/README.markdown Thu Jun 20 10:37:48 2019 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ ---- -description: Lossless CSI module ---- - -This module was merged into Prosody as -[mod_csi_simple][doc:modules:mod_csi_simple] and has continued -to evolve there. The version here might not receive updates anymore. -Consider using mod_csi_simple or [mod_csi_battery_saver] instead.
--- a/mod_csi_pump/mod_csi_pump.lua Thu Jun 20 10:37:48 2019 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,100 +0,0 @@ --- Copyright (C) 2016 Kim Alvefur --- - -module:depends"csi" -module:depends"track_muc_joins" -local jid = require "util.jid"; -local new_queue = require "util.queue".new; - -local function new_pump(output, ...) - -- luacheck: ignore 212/self - local q = new_queue(...); - local flush = true; - function q:pause() - flush = false; - end - function q:resume() - flush = true; - return q:flush(); - end - local push = q.push; - function q:push(item) - local ok = push(self, item); - if not ok then - q:flush(); - output(item, self); - elseif flush then - return q:flush(); - end - return true; - end - function q:flush() - local item = self:pop(); - while item do - output(item, self); - item = self:pop(); - end - return true; - end - return q; -end - --- TODO delay stamps --- local dt = require "util.datetime"; - -local function is_important(stanza, session) - local st_name = stanza.name; - if not st_name then return false; end - local st_type = stanza.attr.type; - if st_name == "presence" then - -- TODO check for MUC status codes? - if st_type == nil or st_type == "unavailable" then - return false; - end - return true; - elseif st_name == "message" then - if st_type == "headline" then - return false; - end - local body = stanza:get_child_text("body"); - if st_type == "groupchat" then - if stanza:get_child_text("subject") then return true; end - if not body then return false; end - if body:find(session.username, 1, true) then return true; end - local rooms = session.rooms_joined; - if not rooms then return false; end - local room_nick = rooms[jid.bare(stanza.attr.from)]; - if room_nick and body:find(room_nick, 1, true) then return true; end - return false; - end - return body; - end - return true; -end - -module:hook("csi-client-inactive", function (event) - local session = event.origin; - if session.pump then - session.pump:pause(); - else - session._orig_send = session.send; - local pump = new_pump(session.send, 100); - pump:pause(); - session.pump = pump; - function session.send(stanza) - pump:push(stanza); - if is_important(stanza, session) then - pump:flush(); - end - return true; - end - end -end); - -module:hook("csi-client-active", function (event) - local session = event.origin; - if session.pump then - session.pump:resume(); - end -end); -