module Net::SSH::Test::Extensions::IO::ClassMethods

  1. lib/net/ssh/test/extensions.rb
Parent: IO

Methods

Public Instance

  1. select_for_test

Public Instance methods

select_for_test (readers=nil, writers=nil, errors=nil, wait=nil)

The testing version of ::IO.select. Assumes that all readers, writers, and errors arrays are either nil, or contain only objects that mix in Net::SSH::Test::Extensions::BufferedIo.

[show source]
# File lib/net/ssh/test/extensions.rb, line 127
def select_for_test(readers=nil, writers=nil, errors=nil, wait=nil)
  ready_readers = Array(readers).select { |r| r.select_for_read? }
  ready_writers = Array(writers).select { |r| r.select_for_write? }
  ready_errors  = Array(errors).select  { |r| r.select_for_error? }

  if ready_readers.any? || ready_writers.any? || ready_errors.any?
    return [ready_readers, ready_writers, ready_errors]
  end

  processed = 0
  Array(readers).each do |reader|
    processed += 1 if reader.idle!
  end

  raise "no readers were ready for reading, and none had any incoming packets" if processed == 0
end