-- COPYING file in the source package for more information.
--
-
-local ns_addtimer = require "net.server".addtimer;
-local event = require "net.server".event;
-local event_base = require "net.server".event_base;
-
+local server = require "net.server";
local math_min = math.min
local math_huge = math.huge
local get_time = require "socket".gettime;
local t_insert = table.insert;
-local t_remove = table.remove;
-local ipairs, pairs = ipairs, pairs;
+local pairs = pairs;
local type = type;
local data = {};
module "timer"
local _add_task;
-if not event then
+if not server.event then
function _add_task(delay, callback)
local current_time = get_time();
delay = delay + current_time;
if delay >= current_time then
t_insert(new_data, {delay, callback});
else
- local r = callback();
+ local r = callback(current_time);
if r and type(r) == "number" then
return _add_task(r, callback);
end
end
end
- ns_addtimer(function()
+ server._addtimer(function()
local current_time = get_time();
if #new_data > 0 then
for _, d in pairs(new_data) do
return next_time;
end);
else
+ local event = server.event;
+ local event_base = server.event_base;
local EVENT_LEAVE = (event.core and event.core.LEAVE) or -1;
+
function _add_task(delay, callback)
local event_handle;
event_handle = event_base:addevent(nil, 0, function ()
- local ret = callback();
+ local ret = callback(get_time());
if ret then
return 0, ret;
elseif event_handle then