module Eye::Controller::Commands
Constants
- NOT_IMPORTANT_COMMANDS
Public Instance Methods
command(cmd, *args)
click to toggle source
Main method, answer for the client command
# File lib/eye/controller/commands.rb, line 7 def command(cmd, *args) msg = "command: #{cmd} #{args * ', '}" log_str = "=> #{msg}" NOT_IMPORTANT_COMMANDS.include?(cmd) ? debug(log_str) : info(log_str) start_at = Time.now cmd = cmd.to_sym res = case cmd when :start, :stop, :restart, :unmonitor, :monitor, :break_chain send_command(cmd, *args) when :delete exclusive{ send_command(cmd, *args) } when :signal signal(*args) when :load load(*args) when :quit quit when :stop_all stop_all(*args) when :check check(*args) when :explain explain(*args) when :match match(*args) when :ping :pong when :logger_dev Eye::Logger.dev # object commands, for api when :info_data info_data(*args) when :short_data short_data(*args) when :debug_data debug_data(*args) when :history_data history_data(*args) else :unknown_command end GC.start log_str = "<= #{msg} (#{Time.now - start_at}s)" NOT_IMPORTANT_COMMANDS.include?(cmd) ? debug(log_str) : info(log_str) res end
Private Instance Methods
quit()
click to toggle source
# File lib/eye/controller/commands.rb, line 64 def quit info 'Quit!' Eye::System.send_signal($$, :TERM) sleep 1 Eye::System.send_signal($$, :KILL) end
stop_all(timeout = nil)
click to toggle source
stop all processes and wait
# File lib/eye/controller/commands.rb, line 72 def stop_all(timeout = nil) exclusive do send_command :break_chain, 'all' send_command :stop, 'all' end # wait until all processes goes to unmonitored timeout ||= 100 all_processes.pmap do |p| p.wait_for_condition(timeout, 0.3) do p.state_name == :unmonitored end end end