class QueueKit::SignalChecker

Constants

COMMON_SIGNALS
JRUBY_SIGNALS
OPTIONAL_SIGNALS

Attributes

handler[R]
worker[R]

Public Class Methods

new(worker, handler) click to toggle source
# File lib/queue_kit/signal_checker.rb, line 14
def initialize(worker, handler)
  @worker = worker
  @handler = handler
end
trap(worker, handler) click to toggle source
# File lib/queue_kit/signal_checker.rb, line 10
def self.trap(worker, handler)
  new(worker, handler).trap_signals
end

Public Instance Methods

debug(key, sig) click to toggle source
# File lib/queue_kit/signal_checker.rb, line 44
def debug(key, sig)
  @worker.debug { ["signals.#{key}", {:signal => sig}] }
end
trap_signal(sig) click to toggle source
# File lib/queue_kit/signal_checker.rb, line 32
def trap_signal(sig)
  trap_method = "trap_#{sig}"
  return unless @handler.respond_to?(trap_method)

  debug :setup, sig

  old_handler = trap sig do
    @handler.send(trap_method, @worker)
    old_handler.call if old_handler.respond_to?(:call)
  end
end
trap_signals(signals = nil) click to toggle source
# File lib/queue_kit/signal_checker.rb, line 19
def trap_signals(signals = nil)
  if signals.nil?
    trap_signals(COMMON_SIGNALS)
    trap_signals(JRUBY_SIGNALS) unless defined?(JRUBY_VERSION)
    trap_signals(OPTIONAL_SIGNALS)
  else
    signals.each { |sig| trap_signal(sig) }
  end

rescue ArgumentError
  warn "Signals are not supported: #{signals.inspect}"
end