class Timers::Wait
An exclusive, monotonic timeout class.
Attributes
Public Class Methods
Source
# File lib/timers/wait.rb, line 7 def self.for(duration, &block) if duration timeout = self.new(duration) timeout.while_time_remaining(&block) else while true yield(nil) end end end
Source
# File lib/timers/wait.rb, line 19 def initialize(duration) @duration = duration @remaining = true end
Public Instance Methods
Source
# File lib/timers/wait.rb, line 28 def while_time_remaining(&block) @interval = Hitimes::Interval.new @interval.start while time_remaining? yield @remaining end ensure @interval.stop @interval = nil end
Yields while time remains for work to be done:
Private Instance Methods
Source
# File lib/timers/wait.rb, line 42 def time_remaining? @remaining = (@duration - @interval.duration) return @remaining > 0 end