class Gem::Timeout::Request
def done?
def done? @mutex.synchronize do @done end end
def expired?(now)
def expired?(now) now >= @deadline end
def finished
def finished @mutex.synchronize do @done = true end end
def initialize(thread, timeout, exception_class, message)
def initialize(thread, timeout, exception_class, message) @thread = thread @deadline = GET_TIME.call(Process::CLOCK_MONOTONIC) + timeout @exception_class = exception_class @message = message @mutex = Mutex.new @done = false # protected by @mutex end
def interrupt
def interrupt @mutex.synchronize do unless @done @thread.raise @exception_class, @message @done = true end end end