class Reline::ANSI

Public Class Methods

select(read_ios = [], write_ios = [], error_ios = [], timeout = nil) click to toggle source
# File lib/polyphony/adapters/irb.rb, line 7
def self.select(read_ios = [], write_ios = [], error_ios = [], timeout = nil)
  p [:select, read_ios]
  raise if read_ios.size > 1
  raise if write_ios.size > 0
  raise if error_ios.size > 0

  fiber = Fiber.current
  timer = spin do
    sleep timeout
    fiber.cancel
  end
  read_ios.each do |io|
    Polyphony.backend_wait_io(io, false)
    return [io]
  end
rescue Polyphony::Cancel
  return nil
ensure
  timer.stop
end