class Delayed::Master::Signaler
Public Class Methods
new(master)
click to toggle source
# File lib/delayed/master/signaler.rb, line 4 def initialize(master) @master = master end
Public Instance Methods
dispatch(signal)
click to toggle source
# File lib/delayed/master/signaler.rb, line 15 def dispatch(signal) @master.workers.each do |worker| next unless worker.pid dispatch_to(signal, worker.pid) end end
register()
click to toggle source
# File lib/delayed/master/signaler.rb, line 8 def register signals = [[:TERM, :stop], [:INT, :stop], [:QUIT, :quit], [:USR1, :reopen_files], [:USR2, :restart]] signals.each do |signal, method| register_signal(signal, method) end end
Private Instance Methods
dispatch_to(signal, pid)
click to toggle source
# File lib/delayed/master/signaler.rb, line 33 def dispatch_to(signal, pid) Process.kill(signal, pid) @master.logger.info "sent #{signal} signal to worker #{pid}" rescue @master.logger.error "failed to send #{signal} signal to worker #{pid}" end
register_signal(signal, method)
click to toggle source
# File lib/delayed/master/signaler.rb, line 24 def register_signal(signal, method) trap(signal) do Thread.new do @master.logger.info "received #{signal} signal" @master.public_send(method) end end end