agis / ruby-sdnotify

A pure-Ruby implementation of systemd's sd_notify(3)
https://www.freedesktop.org/software/systemd/man/sd_notify.html
MIT License
50 stars 8 forks source link

Get watchdog interval #6

Open Mr0grog opened 1 year ago

Mr0grog commented 1 year ago

I was helping a friend implement watchdog notifications, and noticed that, unlike sd_watchdog_enabled(3), this gem doesn’t have a way to get the configured watchdog interval. Instead, pretty much every Ruby gem or app I’ve seen use this has to implement the same pattern:

def do_watchdog
  return unless SdNotify.watchdog?

  # Divide by 1,000,000 since 99% of Ruby tooling uses seconds, not microseconds.
  interval = Integer(ENV.fetch('WATCHDOG_USEC')) / 1_000_000.0
  loop do
    SdNotify.watchdog
    sleep interval
  end
end

It would be much more convenient (and require less digging around to learn the environment variables) if this gem exposed a method to get the watchdog interval:

def do_watchdog
  return unless SdNotify.watchdog?

  loop do
    SdNotify.watchdog
    sleep SdNotify.watchdog_interval
  end
end

Ideally, I think this would:

  1. Return 0 (or maybe -1?) if the watchdog is not expecting notifications (that is, if SdNotify.watchdog? would have returned false).

  2. Return the number of seconds as a float instead of the number of microseconds as an integer, since almost all use cases will involve doing this anyway.

agis commented 4 months ago

Sounds like a good idea! Any interested in submitting a PR?

Mr0grog commented 4 months ago

Done! #11

Mr0grog commented 3 months ago

Hi @agis, this is just a friendly reminder that I posted a PR for this about a month ago: #11. Not sure if you saw it.