module Svent::EventManger::Helper

Attributes

this[W]

Public Class Methods

after_delete() click to toggle source
# File lib/svent/event_manger.rb, line 24
def after_delete
  @events[@this.name].delete(@this.callback)
end
delete() click to toggle source
# File lib/svent/event_manger.rb, line 28
def delete
  after_delete
  Fiber.yield true
end
filter(&block) click to toggle source
# File lib/svent/event_manger.rb, line 48
def filter(&block)
  Fiber.yield true unless block.call
end
init(events, callback_fibers) click to toggle source
# File lib/svent/event_manger.rb, line 14
def init(events, callback_fibers)
  @this = nil
  @events = events
  @callback_fibers = callback_fibers
  @timers = {}
  @counters = {}
  @timer_filters = {}
  @counter_filters = {}
end
loop(condition, info = nil, &block) click to toggle source
# File lib/svent/event_manger.rb, line 40
def loop(condition, info = nil, &block)
  Kernel.loop do
    break if condition.call
    block.call(info)
    Fiber.yield
  end
end
ok?(info = nil, &block) click to toggle source
# File lib/svent/event_manger.rb, line 33
def ok?(info = nil, &block)
  Kernel.loop do
    break if block.call(info)
    Fiber.yield
  end
end
times(value) click to toggle source
# File lib/svent/event_manger.rb, line 61
def times(value)
  counter = @counters[@this.object_id]
  counter ? @counters[@this.object_id] += 1 : @counters[@this.object_id] = 1
  loop do
    break @counters.delete(@this.object_id) if counter > value
    Fiber.yield
  end
end
times_filter(value) click to toggle source
# File lib/svent/event_manger.rb, line 79
def times_filter(value)
  counter_filter = @counter_filters[@this.object_id]
  counter_filter ? @counter_filters[@this.object_id] += 1 : (return @counter_filters[@this.object_id] = 1)
  loop do
    break @counter_filters.delete(@this.object_id) if @counter_filters[object_id] > value
    Fiber.yield true
  end
end
wait(value) click to toggle source
# File lib/svent/event_manger.rb, line 52
def wait(value)
  timer = @timers[@this.object_id]
  timer = Time.now unless timer
  loop do
    break @timers.delete(@this.object_id) unless Time.now - timer < value
    Fiber.yield
  end
end
wait_filter(value) click to toggle source
# File lib/svent/event_manger.rb, line 70
def wait_filter(value)
  timer_filter = @timer_filters[@this.object_id]
  return timer_filter = Time.now unless timer_filter
  loop do
    break @timer_filters.delete(@this.object_id) unless Time.now - timer_filter < value
    Fiber.yield true
  end
end