class Assistor::Daemon
Public Class Methods
new(configuration)
click to toggle source
# File lib/assistor/daemon.rb, line 7 def initialize(configuration) @configuration = configuration end
Public Instance Methods
name()
click to toggle source
# File lib/assistor/daemon.rb, line 11 def name [:assistor, id].join ':' end
run(queue)
click to toggle source
# File lib/assistor/daemon.rb, line 15 def run(queue) start loop do sleep(delay) unless assist(queue) end rescue => e log_file.error e end
Private Instance Methods
assist(queue)
click to toggle source
# File lib/assistor/daemon.rb, line 52 def assist(queue) assistant_group.flush return if assistant_group.filled? return unless job = queue.pop assistant = Assistant.new(@configuration, job) assistant.assist assistant_group.add(assistant) rescue => e log_file.error e end
assistant_group()
click to toggle source
# File lib/assistor/daemon.rb, line 121 def assistant_group @assistant_group ||= AssistantGroup.new(size) end
daemonize()
click to toggle source
# File lib/assistor/daemon.rb, line 65 def daemonize Process.daemon(true, true) end
decrease()
click to toggle source
# File lib/assistor/daemon.rb, line 73 def decrease assistant_group.decrease end
handle_int_signal()
click to toggle source
# File lib/assistor/daemon.rb, line 100 def handle_int_signal Signal.trap('INT') do Thread.new { stop! }.join exit end end
handle_quit_signal()
click to toggle source
# File lib/assistor/daemon.rb, line 107 def handle_quit_signal Signal.trap('QUIT') do Thread.new { stop }.join end end
handle_signals()
click to toggle source
# File lib/assistor/daemon.rb, line 85 def handle_signals handle_term_signal handle_int_signal handle_quit_signal handle_usr1_signal handle_usr2_signal end
handle_term_signal()
click to toggle source
# File lib/assistor/daemon.rb, line 93 def handle_term_signal Signal.trap('TERM') do Thread.new { stop! }.join exit end end
handle_usr1_signal()
click to toggle source
# File lib/assistor/daemon.rb, line 113 def handle_usr1_signal Signal.trap('USR1') { increase } end
handle_usr2_signal()
click to toggle source
# File lib/assistor/daemon.rb, line 117 def handle_usr2_signal Signal.trap('USR2') { decrease } end
increase()
click to toggle source
# File lib/assistor/daemon.rb, line 69 def increase assistant_group.increase end
pid()
click to toggle source
# File lib/assistor/daemon.rb, line 81 def pid @pid ||= Process.pid end
set_process_title()
click to toggle source
# File lib/assistor/daemon.rb, line 77 def set_process_title $0 = name end
start()
click to toggle source
# File lib/assistor/daemon.rb, line 26 def start daemonize log_file.reopen handle_signals set_process_title pid_file.create pid end
stop()
click to toggle source
# File lib/assistor/daemon.rb, line 34 def stop assistant_group.wait assistant_group.flush pid_file.delete exit!(0) rescue => e log_file.error e end
stop!()
click to toggle source
# File lib/assistor/daemon.rb, line 43 def stop! assistant_group.stop assistant_group.flush pid_file.delete exit!(1) rescue => e log_file.error e end