1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
# frozen_string_literal: true
# Released under the MIT License.
# Copyright, 2018-2022, by Samuel Williams.
module Timers
# A collection of timers which may fire at different times
class Interval
# Get the current elapsed monotonic time.
def initialize
@total = 0.0
@current = nil
end
def start
return if @current
@current = now
end
def stop
return unless @current
@total += duration
@current = nil
end
def to_f
@total + duration
end
protected def duration
now - @current
end
protected def now
::Process.clock_gettime(::Process::CLOCK_MONOTONIC)
end
end
end
|