Sha256: ae9f7ab2a05651a22ec3c50e1e79dff0cf4e12553462c0011413cdeb9ba895db
Contents?: true
Size: 1.11 KB
Versions: 1
Compression:
Stored size: 1.11 KB
Contents
module QueueKit class SignalChecker COMMON_SIGNALS = %w(TERM INT) JRUBY_SIGNALS = %w(QUIT USR1) OPTIONAL_SIGNALS = %w(USR2 CONT HUP) attr_reader :worker attr_reader :handler def self.trap(worker, handler) new(worker, handler).trap_signals end def initialize(worker, handler) @worker = worker @handler = handler end 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 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 def debug(key, sig) @worker.debug { ["signals.#{key}", {:signal => sig}] } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
queue_kit-0.0.10 | lib/queue_kit/signal_checker.rb |