module LightIO::Library::Timeout

Constants

Error

Public Instance Methods

timeout(sec, klass=Error) { |sec| ... } click to toggle source
# File lib/lightio/library/timeout.rb, line 7
def timeout(sec, klass=Error, &blk)
  return yield(sec) if sec.nil? or sec.zero?
  beam = LightIO::Beam.new(sec, &blk)
  message = "execution expired"
  if beam.join(sec).nil?
    raise klass, message
  else
    beam.value
  end
end