class Timeouter::Timer
Attributes
started_at[R]
timeout[R]
Public Class Methods
new(timeout = 0, eclass: nil, message: nil)
click to toggle source
# File lib/timeouter/timer.rb, line 8 def initialize(timeout = 0, eclass: nil, message: nil) # ensure only positive timeouts timeout ||= 0 @timeout = [timeout, 0].max @eclass = eclass || Timeouter::TimeoutError @message = message || 'execution expired' @started_at = Process.clock_gettime(Process::CLOCK_MONOTONIC) end
Public Instance Methods
elapsed()
click to toggle source
elapsed time from creation
# File lib/timeouter/timer.rb, line 20 def elapsed Process.clock_gettime(Process::CLOCK_MONOTONIC) - @started_at end
exhausted?()
click to toggle source
is timeout exhausted? or nil when timeout was 0
# File lib/timeouter/timer.rb, line 30 def exhausted? (@timeout > 0) ? elapsed > @timeout : nil end
left()
click to toggle source
time left to be exhausted or nil if timeout was 0
# File lib/timeouter/timer.rb, line 25 def left (@timeout > 0) ? [@timeout - elapsed, 0].max : nil end
loop() { |self| ... }
click to toggle source
run block in loop until timeout reached. Use break for returning result
# File lib/timeouter/timer.rb, line 45 def loop yield(self) while self.running? end
loop!(eclass = @eclass, message: @message) { |self| ... }
click to toggle source
# File lib/timeouter/timer.rb, line 49 def loop!(eclass = @eclass, message: @message) yield(self) while self.running!(eclass, message: message) end
running!(eclass = @eclass, message: @message)
click to toggle source
ensure timeout NOT exhausted raise exception otherwise
# File lib/timeouter/timer.rb, line 40 def running!(eclass = @eclass, message: @message) !exhausted? || (raise eclass.new(message)) end
running?()
click to toggle source
is timeout NOT exhausted? or true when timeout was 0
# File lib/timeouter/timer.rb, line 35 def running? !exhausted? end