class OmfCommon::Eventloop
Providing event loop support.
Public Class Methods
init(opts, &block)
click to toggle source
opts:
:type - eventloop provider :provider - custom provider (opts) :require - gem to load first (opts) :constructor - Class implementing provider
# File lib/omf_common/eventloop.rb, line 30 def self.init(opts, &block) unless @@instance unless provider = opts[:provider] provider = @@providers[opts[:type].to_sym] end unless provider raise "Missing Eventloop provider declaration. Either define 'type' or 'provider'" end require provider[:require] if provider[:require] if class_name = provider[:constructor] provider_class = class_name.split('::').inject(Object) {|c,n| c.const_get(n) } inst = provider_class.new(opts, &block) else raise "Missing provider creation info - :constructor" end @@instance = inst end @@instance end
instance()
click to toggle source
# File lib/omf_common/eventloop.rb, line 52 def self.instance @@instance end
new(opts = {}, &block)
click to toggle source
# File lib/omf_common/eventloop.rb, line 119 def initialize(opts = {}, &block) #run(&block) if block end
Public Instance Methods
after(delay_sec, &block)
click to toggle source
Execute block after some time
@param [Float] delay_sec in sec
# File lib/omf_common/eventloop.rb, line 60 def after(delay_sec, &block) raise "Missing implementation 'after'" end
defer(&block)
click to toggle source
Call ‘block’ in the context of a separate thread.
# File lib/omf_common/eventloop.rb, line 74 def defer(&block) raise "Missing implementation 'defer'" end
every(interval_sec, &block)
click to toggle source
Periodically call block every interval_sec
@param [Float] interval_sec in sec
# File lib/omf_common/eventloop.rb, line 68 def every(interval_sec, &block) raise "Missing implementation 'every'" end
join()
click to toggle source
Block calling thread until eventloop exits
# File lib/omf_common/eventloop.rb, line 79 def join() raise "Missing implementation 'join'" end
on_int_signal(&block)
click to toggle source
Calling ‘block’ when having trapped an INT signal
# File lib/omf_common/eventloop.rb, line 106 def on_int_signal(&block) # trap(:INT) warn "Missing implementation 'on_int_signal'" end
on_stop(&block)
click to toggle source
Calling ‘block’ before stopping eventloop
# File lib/omf_common/eventloop.rb, line 100 def on_stop(&block) @@on_stop_proc << block end
on_term_signal(&block)
click to toggle source
Calling ‘block’ when having trapped a TERM signal
# File lib/omf_common/eventloop.rb, line 113 def on_term_signal(&block) # trap(:TERM) {} warn "Missing implementation 'on_term_signal'" end
run()
click to toggle source
# File lib/omf_common/eventloop.rb, line 83 def run() raise "Missing implementation 'run'" end
stop()
click to toggle source
# File lib/omf_common/eventloop.rb, line 87 def stop() @@on_stop_proc.each do |block| begin block.call() rescue => ex error "Exception '#{ex}'" debug "#{ex}\n\t#{ex.backtrace.join("\n\t")}" end end end