module Fluent::PluginHelper::Timer
def initialize
def initialize super @_timers ||= Set.new end
def start
def start super @_timer_running = true end
def stop
def stop super @_timer_running = false end
def terminate
def terminate super @_timers = nil end
def timer_execute(title, interval, repeat: true, &block)
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
def timer_running?
def timer_running? defined?(@_timer_running) && @_timer_running end