Class: OmfCommon::Eventloop
- Inherits:
- 
      Object
      
        - Object
- OmfCommon::Eventloop
 
- Defined in:
- lib/omf_common/eventloop.rb,
 lib/omf_common/eventloop/em.rb,
 lib/omf_common/eventloop/local_evl.rb
Overview
Providing event loop support.
Direct Known Subclasses
Defined Under Namespace
Classes: EventMachine, Local
Constant Summary collapse
- @@providers =
- { em: { require: 'omf_common/eventloop/em', constructor: 'OmfCommon::Eventloop::EventMachine' }, local: { require: 'omf_common/eventloop/local_evl', constructor: 'OmfCommon::Eventloop::Local' } } 
- @@instance =
- nil
- @@on_stop_proc =
- [] 
Class Method Summary collapse
- 
  
    
      .init(opts, &block)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    opts: :type - eventloop provider :provider - custom provider (opts) :require - gem to load first (opts) :constructor - Class implementing provider. 
- .instance ⇒ Object
Instance Method Summary collapse
- 
  
    
      #after(delay_sec, &block)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Execute block after some time. 
- 
  
    
      #defer(&block)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Call ‘block’ in the context of a separate thread. 
- 
  
    
      #every(interval_sec, &block)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Periodically call block every interval_sec. 
- 
  
    
      #join  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Block calling thread until eventloop exits. 
- 
  
    
      #on_int_signal(&block)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Calling ‘block’ when having trapped an INT signal. 
- 
  
    
      #on_stop(&block)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Calling ‘block’ before stopping eventloop. 
- 
  
    
      #on_term_signal(&block)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Calling ‘block’ when having trapped a TERM signal. 
- #run ⇒ Object
- #stop ⇒ Object
Class Method Details
.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 | 
.instance ⇒ Object
| 52 53 54 | # File 'lib/omf_common/eventloop.rb', line 52 def self.instance @@instance end | 
Instance Method Details
#after(delay_sec, &block) ⇒ Object
Execute block after some time
| 60 61 62 | # File 'lib/omf_common/eventloop.rb', line 60 def after(delay_sec, &block) raise "Missing implementation 'after'" end | 
#defer(&block) ⇒ Object
Call ‘block’ in the context of a separate thread.
| 74 75 76 | # File 'lib/omf_common/eventloop.rb', line 74 def defer(&block) raise "Missing implementation 'defer'" end | 
#every(interval_sec, &block) ⇒ Object
Periodically call block every interval_sec
| 68 69 70 | # File 'lib/omf_common/eventloop.rb', line 68 def every(interval_sec, &block) raise "Missing implementation 'every'" end | 
#join ⇒ Object
Block calling thread until eventloop exits
| 79 80 81 | # File 'lib/omf_common/eventloop.rb', line 79 def join() raise "Missing implementation 'join'" end | 
#on_int_signal(&block) ⇒ Object
Calling ‘block’ when having trapped an INT signal
| 106 107 108 109 | # 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) ⇒ Object
Calling ‘block’ before stopping eventloop
| 100 101 102 | # File 'lib/omf_common/eventloop.rb', line 100 def on_stop(&block) @@on_stop_proc << block end | 
#on_term_signal(&block) ⇒ Object
Calling ‘block’ when having trapped a TERM signal
| 113 114 115 116 | # File 'lib/omf_common/eventloop.rb', line 113 def on_term_signal(&block) # trap(:TERM) {} warn "Missing implementation 'on_term_signal'" end | 
#run ⇒ Object
| 83 84 85 | # File 'lib/omf_common/eventloop.rb', line 83 def run() raise "Missing implementation 'run'" end |