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