File

net/resolvers/manual.lua @ 13357:f424c9f1460b

mod_mam: Use for loop in metadata query Some storage drivers will perform cleanup after the last iteration, but if only one step is taken this might be delayed until the garbage collector gets to it.
author Kim Alvefur <zash@zash.se>
date Sun, 26 Nov 2023 22:58:11 +0100
parent 12589:39ae08180c81
line wrap: on
line source

local methods = {};
local resolver_mt = { __index = methods };
local unpack = table.unpack;

-- Find the next target to connect to, and
-- pass it to cb()
function methods:next(cb)
	if #self.targets == 0 then
		cb(nil);
		return;
	end
	local next_target = table.remove(self.targets, 1);
	cb(unpack(next_target, 1, 4));
end

local function new(targets, conn_type, extra)
	return setmetatable({
		conn_type = conn_type;
		extra = extra;
		targets = targets or {};
	}, resolver_mt);
end

return {
	new = new;
};