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

add_task(fn)
Alias for: create_task
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