class Servolux::Server

def trap_signals

def trap_signals
  @queue = []
  @rd, @wr = IO.pipe
  SIGNALS.each do |sig|
    method = sig.downcase.to_sym
    if self.respond_to? method
      Signal.trap(sig) do
        begin
          @queue << method
          @wr.write_nonblock("!")
        rescue StandardError => err
          logger.error "Exception in signal handler: #{method}"
          logger.error err
        end
      end
    end
  end
  Thread.new {
    :run while process_signals
    @rd.close if !@rd.nil? && !@rd.closed?
    @wr.close if !@wr.nil? && !@wr.closed?
    logger.info "Signal processing thread has stopped"
  }
end