Annotate

util/watchdog.lua @ 13146:771eb453e03a

util.sqlite3: Deduplicate query methods There were 3 very similar methods: - :execute() - :execute_query() - :execute_update() The first one returns the prepared statement and is mainly used internally in the library for CREATE statements. The later two only really differ in how the results are returned. Those two are one main method and one small one that only picks out the iterator.
author Kim Alvefur <zash@zash.se>
date Sat, 10 Jun 2023 22:02:15 +0200
parent 12975:d10957394a3c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12975
d10957394a3c util: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12547
diff changeset
1 local timer = require "prosody.util.timer";
4401
0ed617f58404 util.watchdog: Watchdog timer library
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2 local setmetatable = setmetatable;
0ed617f58404 util.watchdog: Watchdog timer library
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3
6777
5de6b93d0190 util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents: 4891
diff changeset
4 local _ENV = nil;
8555
4f0f5b49bb03 vairious: Add annotation when an empty environment is set [luacheck]
Kim Alvefur <zash@zash.se>
parents: 6777
diff changeset
5 -- luacheck: std none
4401
0ed617f58404 util.watchdog: Watchdog timer library
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6
0ed617f58404 util.watchdog: Watchdog timer library
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7 local watchdog_methods = {};
0ed617f58404 util.watchdog: Watchdog timer library
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8 local watchdog_mt = { __index = watchdog_methods };
0ed617f58404 util.watchdog: Watchdog timer library
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9
6777
5de6b93d0190 util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents: 4891
diff changeset
10 local function new(timeout, callback)
12545
5059a639f61e util.watchdog: Update to use "new" util.timer API
Matthew Wild <mwild1@gmail.com>
parents: 8555
diff changeset
11 local watchdog = setmetatable({
5059a639f61e util.watchdog: Update to use "new" util.timer API
Matthew Wild <mwild1@gmail.com>
parents: 8555
diff changeset
12 timeout = timeout;
5059a639f61e util.watchdog: Update to use "new" util.timer API
Matthew Wild <mwild1@gmail.com>
parents: 8555
diff changeset
13 callback = callback;
5059a639f61e util.watchdog: Update to use "new" util.timer API
Matthew Wild <mwild1@gmail.com>
parents: 8555
diff changeset
14 timer_id = nil;
5059a639f61e util.watchdog: Update to use "new" util.timer API
Matthew Wild <mwild1@gmail.com>
parents: 8555
diff changeset
15 }, watchdog_mt);
5059a639f61e util.watchdog: Update to use "new" util.timer API
Matthew Wild <mwild1@gmail.com>
parents: 8555
diff changeset
16
12546
e78b35574aae util.watchdog: Allow :reset() to restart a cancelled watchdog
Matthew Wild <mwild1@gmail.com>
parents: 12545
diff changeset
17 watchdog:reset(); -- Kick things off
12545
5059a639f61e util.watchdog: Update to use "new" util.timer API
Matthew Wild <mwild1@gmail.com>
parents: 8555
diff changeset
18
4401
0ed617f58404 util.watchdog: Watchdog timer library
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 return watchdog;
0ed617f58404 util.watchdog: Watchdog timer library
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 end
0ed617f58404 util.watchdog: Watchdog timer library
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21
12547
e79c64b2dfed util.watchdog: Allow passing a new timeout to :reset()
Matthew Wild <mwild1@gmail.com>
parents: 12546
diff changeset
22 function watchdog_methods:reset(new_timeout)
e79c64b2dfed util.watchdog: Allow passing a new timeout to :reset()
Matthew Wild <mwild1@gmail.com>
parents: 12546
diff changeset
23 if new_timeout then
e79c64b2dfed util.watchdog: Allow passing a new timeout to :reset()
Matthew Wild <mwild1@gmail.com>
parents: 12546
diff changeset
24 self.timeout = new_timeout;
e79c64b2dfed util.watchdog: Allow passing a new timeout to :reset()
Matthew Wild <mwild1@gmail.com>
parents: 12546
diff changeset
25 end
12545
5059a639f61e util.watchdog: Update to use "new" util.timer API
Matthew Wild <mwild1@gmail.com>
parents: 8555
diff changeset
26 if self.timer_id then
12546
e78b35574aae util.watchdog: Allow :reset() to restart a cancelled watchdog
Matthew Wild <mwild1@gmail.com>
parents: 12545
diff changeset
27 timer.reschedule(self.timer_id, self.timeout+1);
e78b35574aae util.watchdog: Allow :reset() to restart a cancelled watchdog
Matthew Wild <mwild1@gmail.com>
parents: 12545
diff changeset
28 else
e78b35574aae util.watchdog: Allow :reset() to restart a cancelled watchdog
Matthew Wild <mwild1@gmail.com>
parents: 12545
diff changeset
29 self.timer_id = timer.add_task(self.timeout+1, function ()
e78b35574aae util.watchdog: Allow :reset() to restart a cancelled watchdog
Matthew Wild <mwild1@gmail.com>
parents: 12545
diff changeset
30 return self:callback();
e78b35574aae util.watchdog: Allow :reset() to restart a cancelled watchdog
Matthew Wild <mwild1@gmail.com>
parents: 12545
diff changeset
31 end);
12545
5059a639f61e util.watchdog: Update to use "new" util.timer API
Matthew Wild <mwild1@gmail.com>
parents: 8555
diff changeset
32 end
4401
0ed617f58404 util.watchdog: Watchdog timer library
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
33 end
0ed617f58404 util.watchdog: Watchdog timer library
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34
0ed617f58404 util.watchdog: Watchdog timer library
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
35 function watchdog_methods:cancel()
12545
5059a639f61e util.watchdog: Update to use "new" util.timer API
Matthew Wild <mwild1@gmail.com>
parents: 8555
diff changeset
36 if self.timer_id then
5059a639f61e util.watchdog: Update to use "new" util.timer API
Matthew Wild <mwild1@gmail.com>
parents: 8555
diff changeset
37 timer.stop(self.timer_id);
5059a639f61e util.watchdog: Update to use "new" util.timer API
Matthew Wild <mwild1@gmail.com>
parents: 8555
diff changeset
38 self.timer_id = nil;
5059a639f61e util.watchdog: Update to use "new" util.timer API
Matthew Wild <mwild1@gmail.com>
parents: 8555
diff changeset
39 end
4401
0ed617f58404 util.watchdog: Watchdog timer library
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
40 end
0ed617f58404 util.watchdog: Watchdog timer library
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
41
6777
5de6b93d0190 util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents: 4891
diff changeset
42 return {
5de6b93d0190 util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents: 4891
diff changeset
43 new = new;
5de6b93d0190 util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents: 4891
diff changeset
44 };