Class: ActiveMatrix::Daemon::SignalHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/active_matrix/daemon/signal_handler.rb

Overview

Handles Unix signals for the daemon coordinator

Signals:

  • TERM/INT: Graceful shutdown

  • HUP: Reload configuration and restart agents

  • USR1: Log rotation (reopen log files)

  • USR2: Dump debug information

Constant Summary collapse

SIGNALS =
%w[TERM INT HUP USR1 USR2].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(daemon) ⇒ SignalHandler

Returns a new instance of SignalHandler.



18
19
20
21
22
# File 'lib/active_matrix/daemon/signal_handler.rb', line 18

def initialize(daemon)
  @daemon = daemon
  @self_pipe_reader, @self_pipe_writer = IO.pipe
  @old_handlers = {}
end

Instance Attribute Details

#daemonObject (readonly)

Returns the value of attribute daemon.



16
17
18
# File 'lib/active_matrix/daemon/signal_handler.rb', line 16

def daemon
  @daemon
end

Instance Method Details

#installObject



24
25
26
27
28
29
30
31
# File 'lib/active_matrix/daemon/signal_handler.rb', line 24

def install
  SIGNALS.each do |signal|
    install_handler(signal)
  end

  # Start signal processing thread
  start_processor
end

#uninstallObject



33
34
35
36
37
38
39
40
# File 'lib/active_matrix/daemon/signal_handler.rb', line 33

def uninstall
  SIGNALS.each do |signal|
    restore_handler(signal)
  end

  @self_pipe_writer.close
  @self_pipe_reader.close
end