module Fluent::Clock

Constants

CLOCK_ID

Public Class Methods

dst_clock_from_time(time) click to toggle source
# File lib/fluent/clock.rb, line 46
def self.dst_clock_from_time(time)
  diff_sec = Time.now - time
  now_raw - diff_sec
end
freeze(dst = nil, &block) click to toggle source
# File lib/fluent/clock.rb, line 28
def self.freeze(dst = nil, &block)
  return freeze_block(dst, &block) if block_given?

  dst = dst_clock_from_time(dst) if dst.is_a?(Time)
  @@frozen_clock = dst || now_raw
end
freeze_block(dst) { || ... } click to toggle source
# File lib/fluent/clock.rb, line 51
def self.freeze_block(dst)
  dst = dst_clock_from_time(dst) if dst.is_a?(Time)
  pre_frozen_clock = @@frozen_clock
  @@frozen_clock = dst || now_raw
  @@block_level += 1
  yield
ensure
  @@block_level -= 1
  @@frozen_clock = pre_frozen_clock
end
now() click to toggle source
# File lib/fluent/clock.rb, line 24
def self.now
  @@frozen_clock || now_raw
end
now_raw() click to toggle source

internal use

# File lib/fluent/clock.rb, line 42
def self.now_raw
  Process.clock_gettime(CLOCK_ID)
end
return() click to toggle source
# File lib/fluent/clock.rb, line 35
def self.return
  raise "invalid return while running code in blocks" if @@block_level > 0
  @@frozen_clock = nil
end