class Puma::Systemd

Public Class Methods

new(events) click to toggle source
# File lib/puma/systemd.rb, line 6
def initialize(events)
  @events = events
end

Public Instance Methods

hook_events() click to toggle source
# File lib/puma/systemd.rb, line 10
def hook_events
  @events.on_booted { SdNotify.ready }
  @events.on_stopped { SdNotify.stopping }
  @events.on_restart { SdNotify.reloading }
end
start_watchdog() click to toggle source
# File lib/puma/systemd.rb, line 16
def start_watchdog
  return unless SdNotify.watchdog?

  ping_f = watchdog_sleep_time

  log "Pinging systemd watchdog every #{ping_f.round(1)} sec"
  Thread.new do
    loop do
      sleep ping_f
      SdNotify.watchdog
    end
  end
end

Private Instance Methods

log(str) click to toggle source
# File lib/puma/systemd.rb, line 41
def log(str)
  @events.log str
end
watchdog_sleep_time() click to toggle source
# File lib/puma/systemd.rb, line 32
def watchdog_sleep_time
  usec = Integer(ENV["WATCHDOG_USEC"])

  sec_f = usec / 1_000_000.0
  # "It is recommended that a daemon sends a keep-alive notification message
  # to the service manager every half of the time returned here."
  sec_f / 2
end