module Fluent::PluginHelper::Timer

def timer_execute(title, interval, repeat: true, &block)

interval: integer/float, repeat: true/false
def timer_execute(title, interval, repeat: true, &block)
  raise ArgumentError, "BUG: title must be a symbol" unless title.is_a? Symbol
  raise ArgumentError, "BUG: block not specified for callback" unless block_given?
  checker = ->(){ @_timer_running }
  detacher = ->(watcher){ event_loop_detach(watcher) }
  timer = TimerWatcher.new(title, interval, repeat, log, checker, detacher, &block)
  @_timers << title
  event_loop_attach(timer)
  timer
end