Software /
code /
prosody
Comparison
core/moduleapi.lua @ 6609:d2faaaca695d
Merge 0.10->trunk
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Fri, 27 Mar 2015 22:24:57 +0000 |
parent | 6557:8aa967c81cbc |
child | 6647:0c363fddcdd9 |
comparison
equal
deleted
inserted
replaced
6608:b6e558febb7a | 6609:d2faaaca695d |
---|---|
16 local resolve_relative_path = require"util.paths".resolve_relative_path; | 16 local resolve_relative_path = require"util.paths".resolve_relative_path; |
17 local measure = require "core.statsmanager".measure; | 17 local measure = require "core.statsmanager".measure; |
18 | 18 |
19 local t_insert, t_remove, t_concat = table.insert, table.remove, table.concat; | 19 local t_insert, t_remove, t_concat = table.insert, table.remove, table.concat; |
20 local error, setmetatable, type = error, setmetatable, type; | 20 local error, setmetatable, type = error, setmetatable, type; |
21 local ipairs, pairs, select, unpack = ipairs, pairs, select, unpack; | 21 local ipairs, pairs, select = ipairs, pairs, select; |
22 local tonumber, tostring = tonumber, tostring; | 22 local tonumber, tostring = tonumber, tostring; |
23 local require = require; | 23 local require = require; |
24 local pack = table.pack or function(...) return {n=select("#",...), ...}; end -- table.pack is only in 5.2 | |
25 local unpack = table.unpack or unpack; -- renamed in 5.2 | |
24 | 26 |
25 local prosody = prosody; | 27 local prosody = prosody; |
26 local hosts = prosody.hosts; | 28 local hosts = prosody.hosts; |
27 | 29 |
28 -- FIXME: This assert() is to try and catch an obscure bug (2013-04-05) | 30 -- FIXME: This assert() is to try and catch an obscure bug (2013-04-05) |
348 | 350 |
349 function api:send(stanza) | 351 function api:send(stanza) |
350 return core_post_stanza(hosts[self.host], stanza); | 352 return core_post_stanza(hosts[self.host], stanza); |
351 end | 353 end |
352 | 354 |
353 function api:add_timer(delay, callback) | 355 local timer_methods = { } |
354 return timer.add_task(delay, function (t) | 356 local timer_mt = { |
355 if self.loaded == false then return; end | 357 __index = timer_methods; |
356 return callback(t); | 358 } |
357 end); | 359 function timer_methods:stop( ) |
360 timer.stop(self.id); | |
361 end | |
362 timer_methods.disarm = timer_methods.stop | |
363 function timer_methods:reschedule(delay) | |
364 timer.reschedule(self.id, delay) | |
365 end | |
366 | |
367 local function timer_callback(now, id, t) | |
368 if t.module_env.loaded == false then return; end | |
369 return t.callback(now, unpack(t, 1, t.n)); | |
370 end | |
371 | |
372 function api:add_timer(delay, callback, ...) | |
373 local t = pack(...) | |
374 t.module_env = self; | |
375 t.callback = callback; | |
376 t.id = timer.add_task(delay, timer_callback, t); | |
377 return setmetatable(t, timer_mt); | |
358 end | 378 end |
359 | 379 |
360 local path_sep = package.config:sub(1,1); | 380 local path_sep = package.config:sub(1,1); |
361 function api:get_directory() | 381 function api:get_directory() |
362 return self.path and (self.path:gsub("%"..path_sep.."[^"..path_sep.."]*$", "")) or nil; | 382 return self.path and (self.path:gsub("%"..path_sep.."[^"..path_sep.."]*$", "")) or nil; |