Method: Rpush::Daemon::SignalHandler.start_handler

Defined in:
lib/rpush/daemon/signal_handler.rb

.start_handler(read_io) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/rpush/daemon/signal_handler.rb', line 30

def self.start_handler(read_io)
  @thread = Thread.new do
    while readable_io = IO.select([read_io]) # rubocop:disable AssignmentInCondition
      signal = readable_io.first[0].gets.strip

      begin
        case signal
        when 'HUP'
          handle_hup
        when 'USR2'
          handle_usr2
        when 'INT', 'TERM'
          Thread.new { Rpush::Daemon.shutdown }
          break
        when 'break'
          break
        else
          Rpush.logger.error("Unhandled signal: #{signal}")
        end
      rescue StandardError => e
        Rpush.logger.error("Error raised when handling signal '#{signal}'")
        Rpush.logger.error(e)
      end
    end
  end
end