class Fluent::CallLater_EX

Public Class Methods

new() click to toggle source
# File lib/fluent/plugin/in_tail_multiline_ex.rb, line 287
def initialize
  @locker = Monitor::new
  initExecBlock()
  @thread = Thread.new(&method(:run))
end

Public Instance Methods

call_later(delay,&block) click to toggle source
# File lib/fluent/plugin/in_tail_multiline_ex.rb, line 293
def call_later(delay,&block)
  @locker.synchronize do
    @exec_time = Engine.now + delay
    @exec_block = block
  end
  @thread.run
end
cancel() click to toggle source
# File lib/fluent/plugin/in_tail_multiline_ex.rb, line 326
def cancel()
  initExecBlock()
end
run() click to toggle source
# File lib/fluent/plugin/in_tail_multiline_ex.rb, line 301
def run
  @running = true
  while true
    sleepSec = -1
    @locker.synchronize do
      now = Engine.now
      if @exec_block && @exec_time <= now
        @exec_block.call()
        initExecBlock()
      end          
      return unless @running
      unless(@exec_time == -1)
        sleepSec = @exec_time - now 
      end
    end
    if (sleepSec == -1)
      sleep()
    else
      sleep(sleepSec)
    end
  end
rescue => e
  puts e
end
shutdown() click to toggle source
# File lib/fluent/plugin/in_tail_multiline_ex.rb, line 330
def shutdown()
  @locker.synchronize do
    @running = false
  end
  if(@thread)
    @thread.run
    @thread.join
    @thread = nil
  end
end

Private Instance Methods

initExecBlock() click to toggle source
# File lib/fluent/plugin/in_tail_multiline_ex.rb, line 343
def initExecBlock()
  @locker.synchronize do
    @exec_time = -1
    @exec_block = nil
  end
end