Sha256: 7b729543e957041f3f460d2cfafbee3666127ef087796b292192b40936e0b125

Contents?: true

Size: 1.27 KB

Versions: 8

Compression:

Stored size: 1.27 KB

Contents

class Reactor

  include Celluloid

  def initialize(interval, filename)
    @interval = interval
    @filename = filename
    every(@interval) do
      info "check file #{@filename}"
      if cmd = read_file
        execute_command cmd
      end
    end
  end

  def read_file
    if File.exist?(@filename)
      cmd = File.read(@filename).chop
      File.delete(@filename) rescue nil
      cmd
    end
  end

  def execute_command(cmd)
    Eye::Control.command(cmd, 'all') if %w[restart start stop].include?(cmd)
  end

end

class Saver < Eye::Trigger::Custom

  param :log_name, String, true

  def check(trans)
    tlogger.info "#{process.full_name} transition from #{trans.from_name} to #{trans.to_name}"
  end

  def tlogger
    @tlogger ||= Logger.new(log_name)
  end

end

def reactor
  Celluloid::Actor[:reactor]
end

# Extend config options, add enable_reactor
class Eye::Dsl::ConfigOpts

  def enable_reactor(*args)
    @config[:reactor] = args
  end

  def enable_saver(save_log)
    Eye.application '__default__' do
      trigger :saver, log_name: save_log
    end
  end

end

# extend controller to execute method, and config loads
class Eye::Controller

  def set_opt_reactor(args)
    reactor.terminate if reactor
    Celluloid::Actor[:reactor] = Reactor.supervise(*args)
  end

end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
eye-0.9.2.nosigar examples/plugin/plugin.rb
eye-0.9.2 examples/plugin/plugin.rb
eye-0.9.1 examples/plugin/plugin.rb
eye-0.9.pre examples/plugin/plugin.rb
eye-0.8.1 examples/plugin/plugin.rb
eye-0.8.celluloid15 examples/plugin/plugin.rb
eye-0.8 examples/plugin/plugin.rb
eye-0.8.rc examples/plugin/plugin.rb