Sha256: 06bfd9b23d31621f527acb642f435dce1aaa131d8bb1cd0609728294471a577c

Contents?: true

Size: 792 Bytes

Versions: 2

Compression:

Stored size: 792 Bytes

Contents

require 'eventmachine'

class Nagios::RunnerAsync < Nagios::Runner

  # synchrony check, for manual call
  # do not run in EM
  def self.check(params = {})
    raise "cant check sync in running EM" if EM.reactor_running?
  
    result = nil 
    EM.run do
      self.new(params) do |res|
        begin
          result = res
        ensure
          EM.stop
        end        
      end
    end
    
    result
  end

protected  

  def run
    if @ancestor == Nagios::Check
      # to thread pool
      EM.defer do
        script = @klass.new(@params, &@callback)
        script.run
      end
      
    elsif @ancestor == Nagios::CheckEM
      script = @klass.new(@params, &@callback)
      script.run
      
    else      
      raise "unknown klass #{klass.inspect}"
    end
  end
  
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
nagios_helper-0.1.2 lib/nagios_helper/runner_async.rb
nagios_helper-0.1.1 lib/nagios_helper/runner_async.rb