util.sql: Create table with same charset as the charset we selected for our connectio...
[prosody.git] / util / timer.lua
index d5b66473eded238aed80dad37e49671a39ade636..0e10e144e9746ed0f974be58605fb1fb43dc19ae 100644 (file)
@@ -1,22 +1,17 @@
 -- Prosody IM
 -- Copyright (C) 2008-2010 Matthew Wild
 -- Copyright (C) 2008-2010 Waqas Hussain
--- 
+--
 -- This project is MIT/X11 licensed. Please see the
 -- 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 = {};
@@ -25,21 +20,21 @@ local new_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
@@ -47,7 +42,7 @@ if not event then
                        end
                        new_data = {};
                end
-               
+
                local next_time = math_huge;
                for i, d in pairs(data) do
                        local t, callback = d[1], d[2];
@@ -65,11 +60,14 @@ if not event then
                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