File

mod_measure_conn_buffers/mod_measure_conn_buffers.lua @ 6055:23c4c61a1068

mod_muc_gateway_optimize: New module to optimize muc presence to remote gateways Some gateways are happy to receive presence for each participant in MUCs that they are in only once, to any one of their joined JIDs.
author Stephen Paul Weber <singpolyma@singpolyma.net>
date Sun, 17 Nov 2024 22:32:52 -0500
parent 6050:81805f11263c
line wrap: on
line source

module:set_global();

local measure_total_pending_tx = module:measure("total_pending_tx", "amount");

local server = require "net.server";

if server.get_backend() ~= "epoll" or not server.loop.fds then
	module:log_status("error", "This module is not compatible with your network_backend, only epoll is supported");
	return;
end

local fds = server.loop.fds;

module:hook("stats-update", function ()
	local pending_tx = 0;
	for _, conn in pairs(fds) do
		local buffer = conn.writebuffer;
		if buffer then
			if type(buffer) == "string" then
				pending_tx = pending_tx + #buffer;
			elseif buffer._length then -- dbuffer
				pending_tx = pending_tx + buffer._length;
			else -- simple table
				for i = 1, #buffer do
					pending_tx = pending_tx + #buffer[i];
				end
			end
		end
	end
	measure_total_pending_tx(pending_tx);
end);