Mercurial > prosody-hg
diff teal-src/prosody/plugins/mod_cron.tl @ 13284:ffd3dadf6247
mod_cron: Make task frequencies configurable in overly generic manner
Requested feature for many modules, notably MAM and file sharing.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 22 Oct 2023 18:58:02 +0200 |
| parents | 1c63b8c3cd9d |
| children | 9f1f1e7afdbd |
line wrap: on
line diff
--- a/teal-src/prosody/plugins/mod_cron.tl Sun Oct 22 18:57:28 2023 +0200 +++ b/teal-src/prosody/plugins/mod_cron.tl Sun Oct 22 18:58:02 2023 +0200 @@ -18,6 +18,7 @@ id : string -- unique id name : string -- name or short description when : frequency + period : number last : integer run : function (task_spec, integer) save : function (task_spec, integer) @@ -29,8 +30,6 @@ item : task_spec end -local periods : { frequency : integer } = { hourly = 3600, daily = 86400, weekly = 7*86400 } - local active_hosts : { string : boolean } = { } function module.add_host(host_module : moduleapi) @@ -56,6 +55,7 @@ if task.id == nil then task.id = event.source.name .. "/" .. task.name:gsub("%W", "_"):lower(); end + task.period = host_module:get_option_period(task.id:gsub("/", "_") .. "_period", "1" .. task.when, 60, 86400*7*53); task.restore = restore_task; task.save = save_task; module:log("debug", "%s task %s added", task.when, task.id); @@ -75,13 +75,13 @@ end end -local function should_run(when : frequency, last : integer) : boolean - return not last or last + periods[when]*0.995 <= os.time(); +local function should_run(task : task_spec, last : integer) : boolean + return not last or last + task.period * 0.995 <= os.time(); end local function run_task(task : task_spec) task:restore(); - if not should_run(task.when, task.last) then + if not should_run(task, task.last) then return; end local started_at = os.time();
