Method: OmfCommon::Eventloop.init

Defined in:
lib/omf_common/eventloop.rb

.init(opts, &block) ⇒ Object

opts:

:type - eventloop provider
:provider - custom provider (opts)
  :require - gem to load first (opts)
  :constructor - Class implementing provider


30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 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