Software /
code /
prosody
Comparison
util/timer.lua @ 6931:5c2c8aeb4690
util.timer: Expire timer instance if another instance is already set to take care of the next scheduled event
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 22 Nov 2015 17:20:20 +0100 |
parent | 6930:58e260832334 |
child | 6932:f5fd2c5cdf28 |
comparison
equal
deleted
inserted
replaced
6930:58e260832334 | 6931:5c2c8aeb4690 |
---|---|
41 if success and type(err) == "number" then | 41 if success and type(err) == "number" then |
42 h:insert(_callback, err + now, _id); -- re-add | 42 h:insert(_callback, err + now, _id); -- re-add |
43 params[_id] = _param; | 43 params[_id] = _param; |
44 end | 44 end |
45 end | 45 end |
46 next_time = peek; | 46 |
47 if peek ~= nil then | 47 if peek ~= nil and _active_timers > 1 and peek == next_time then |
48 -- Another instance of _on_timer already set next_time to the same value, | |
49 -- so it should be safe to not renew this timer event | |
50 peek = nil; | |
51 else | |
52 next_time = peek; | |
53 end | |
54 | |
55 if peek then | |
56 -- peek is the time of the next event | |
48 return peek - now; | 57 return peek - now; |
49 end | 58 end |
50 _active_timers = _active_timers - 1; | 59 _active_timers = _active_timers - 1; |
51 end | 60 end |
52 local function add_task(delay, callback, param) | 61 local function add_task(delay, callback, param) |