util/timer.lua
changeset 8998 2e6f7ab97794
parent 8765 2f8523bf7ff2
child 9565 acf74ad0b795
equal deleted inserted replaced
8997:f17e768c1a99 8998:2e6f7ab97794
     8 
     8 
     9 local indexedbheap = require "util.indexedbheap";
     9 local indexedbheap = require "util.indexedbheap";
    10 local log = require "util.logger".init("timer");
    10 local log = require "util.logger".init("timer");
    11 local server = require "net.server";
    11 local server = require "net.server";
    12 local get_time = require "util.time".now
    12 local get_time = require "util.time".now
    13 local async = require "util.async";
       
    14 local type = type;
    13 local type = type;
    15 local debug_traceback = debug.traceback;
    14 local debug_traceback = debug.traceback;
    16 local tostring = tostring;
    15 local tostring = tostring;
    17 local xpcall = xpcall;
    16 local xpcall = xpcall;
    18 local math_max = math.max;
    17 local math_max = math.max;
   102 		_add_task(next_time - current_time, _on_timer);
   101 		_add_task(next_time - current_time, _on_timer);
   103 	end
   102 	end
   104 	return id;
   103 	return id;
   105 end
   104 end
   106 
   105 
   107 local function sleep(s)
       
   108 	local wait, done = async.waiter();
       
   109 	add_task(s, done);
       
   110 	wait();
       
   111 end
       
   112 
       
   113 return {
   106 return {
   114 	add_task = add_task;
   107 	add_task = add_task;
   115 	stop = stop;
   108 	stop = stop;
   116 	reschedule = reschedule;
   109 	reschedule = reschedule;
   117 	sleep = sleep;
       
   118 };
   110 };
   119 
   111