Class: Kaal::SignalHandlerChain

Inherits:
Object
  • Object
show all
Defined in:
lib/kaal/runtime/signal_handler_chain.rb

Overview

Invokes a previously registered signal handler when it is safe to do so.

Constant Summary collapse

RESERVED_COMMAND_HANDLERS =
%w[DEFAULT IGNORE].freeze

Instance Method Summary collapse

Constructor Details

#initialize(signal:, previous_handler:, logger:) ⇒ SignalHandlerChain

Returns a new instance of SignalHandlerChain.



12
13
14
15
16
# File 'lib/kaal/runtime/signal_handler_chain.rb', line 12

def initialize(signal:, previous_handler:, logger:)
  @signal = signal
  @previous_handler = previous_handler
  @logger = logger
end

Instance Method Details

#callObject



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/kaal/runtime/signal_handler_chain.rb', line 18

def call(...)
  return unless @previous_handler

  case @previous_handler
  when Proc, Method
    invoke_callable(...)
  when String
    return if RESERVED_COMMAND_HANDLERS.include?(@previous_handler)

    @logger&.debug("Previous #{@signal} handler was a command: #{@previous_handler}")
  end
end