Module: Net::SSH::Test::Extensions::IO::ClassMethods
- Defined in:
- lib/net/ssh/test/extensions.rb
Class Method Summary collapse
-
.extended(obj) ⇒ Object
:nodoc:.
Instance Method Summary collapse
-
#select_for_test(readers = nil, writers = nil, errors = nil, wait = nil) ⇒ Object
The testing version of ::IO.select.
Class Method Details
.extended(obj) ⇒ Object
:nodoc:
117 118 119 120 121 122 |
# File 'lib/net/ssh/test/extensions.rb', line 117 def self.extended(obj) #:nodoc: class <<obj alias_method :select_for_real, :select alias_method :select, :select_for_test end end |
Instance Method Details
#select_for_test(readers = nil, writers = nil, errors = nil, wait = nil) ⇒ Object
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.
127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
# 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 |