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