class TimeOut

Attributes

active[R]
callback[R]
seconds[R]

Public Class Methods

clear_interval(index) click to toggle source
# File lib/time_out.rb, line 23
def self.clear_interval(index)
  @intervals[index].clear
end
new(callback, seconds) click to toggle source
# File lib/time_out.rb, line 31
def initialize(callback, seconds)
  @callback, @seconds, @active = callback, seconds, true
end
set_interval(callback, seconds) click to toggle source
# File lib/time_out.rb, line 16
def self.set_interval(callback, seconds)
  interval = self.new(callback, seconds)
  interval.set
  @intervals << interval
  @intervals.length - 1
end
set_timeout(callback, seconds) click to toggle source
# File lib/time_out.rb, line 4
def self.set_timeout(callback, seconds)
  end_time = Time.now + seconds

  Thread.new do
    while Time.now <= end_time
      Thread.pass
    end

    callback.()
  end
end
wait_for_intervals() click to toggle source
# File lib/time_out.rb, line 27
def self.wait_for_intervals
  Thread.list.drop(1).each(&:join)
end

Public Instance Methods

clear() click to toggle source
# File lib/time_out.rb, line 43
def clear
  @active = false
end
set() click to toggle source
# File lib/time_out.rb, line 35
def set
  Thread.new do
    while active
      TimeOut.set_timeout(callback, seconds).join
    end
  end
end