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