ruby-sdnotify icon indicating copy to clipboard operation
ruby-sdnotify copied to clipboard

Get watchdog interval

Open Mr0grog opened this issue 2 years ago • 3 comments

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.

Mr0grog avatar Aug 04 '23 17:08 Mr0grog

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

agis avatar Jun 26 '24 17:06 agis

Done! #11

Mr0grog avatar Jun 26 '24 22:06 Mr0grog

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.

Mr0grog avatar Jul 26 '24 16:07 Mr0grog