Method: Libuv::Stream#read
- Defined in:
- lib/libuv/mixins/stream.rb
#read(maxlen = nil, outbuf = nil) ⇒ Object Also known as: read_nonblock
Very basic IO emulation, in no way trying to be exact
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/libuv/mixins/stream.rb', line 131 def read(maxlen = nil, outbuf = nil) raise ::EOFError.new('socket closed') if @closed @read_defer = @reactor.defer if @read_buffer.nil? start_read @read_buffer = String.new self.finally do @read_defer.reject(::EOFError.new('socket closed')) end end if check_read_buffer(maxlen, outbuf, @read_defer) progress do |data| @read_buffer << data check_read_buffer(maxlen, outbuf, @read_defer) end end @read_defer.promise.value end |