class EventLoop
Attributes
item[RW]
Public Class Methods
new()
click to toggle source
# File lib/event_loop.rb, line 8 def initialize @queue = [] @item = {} end
Public Instance Methods
call_later(fn, timeout, callback=nil)
click to toggle source
# File lib/event_loop.rb, line 17 def call_later(fn, timeout, callback=nil) @queue << {:fn => fn, :time => Time.now.to_f + timeout, :callback => callback} end
create_task(fn)
click to toggle source
# File lib/event_loop.rb, line 13 def create_task(fn) self.call_later(fn, 0) end
Also aliased as: add_task
start()
click to toggle source
# File lib/event_loop.rb, line 21 def start while @queue.size > 0 @queue.sort_by!{|i| i[:time].to_i} @item = @queue[0] ctime = Time.now.to_f if ctime >= @item[:time] @queue.delete_at 0 @item[:fn].resume self.call_later(@item[:callback], 0) if @item[:callback] and not @item[:fn].alive? end end end
stop()
click to toggle source
# File lib/event_loop.rb, line 35 def stop end