|
|
|
|
@ -347,11 +347,30 @@ function api:send(stanza) |
|
|
|
|
return core_post_stanza(hosts[self.host], stanza); |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
function api:add_timer(delay, callback) |
|
|
|
|
return timer.add_task(delay, function (t) |
|
|
|
|
if self.loaded == false then return; end |
|
|
|
|
return callback(t); |
|
|
|
|
end); |
|
|
|
|
local timer_methods = { } |
|
|
|
|
local timer_mt = { |
|
|
|
|
__index = timer_methods; |
|
|
|
|
} |
|
|
|
|
function timer_methods:stop( ) |
|
|
|
|
timer.stop(self.id); |
|
|
|
|
end |
|
|
|
|
timer_methods.disarm = timer_methods.stop |
|
|
|
|
function timer_methods:reschedule(delay) |
|
|
|
|
timer.reschedule(self.id, delay) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
local function timer_callback(now, id, t) |
|
|
|
|
if t.module_env.loaded == false then return; end |
|
|
|
|
return t.callback(now, unpack(t, 1, t.n)); |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
local pack = table.pack or function(...) return {n=select("#",...), ...}; end |
|
|
|
|
function api:add_timer(delay, callback, ...) |
|
|
|
|
local t = pack(...) |
|
|
|
|
t.module_env = self; |
|
|
|
|
t.callback = callback; |
|
|
|
|
t.id = timer.add_task(delay, timer_callback, t); |
|
|
|
|
return setmetatable(t, timer_mt); |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
local path_sep = package.config:sub(1,1); |
|
|
|
|
|