File: C:/Ruby27-x64/share/ri/2.7.0/system/OpenSSL/Buffering/read_nonblock-i.ri
U:RDoc::AnyMethod[iI"read_nonblock:ETI"%OpenSSL::Buffering#read_nonblock;TF:publico:RDoc::Markup::Document:@parts[o:RDoc::Markup::Paragraph; [I"=Reads at most _maxlen_ bytes in the non-blocking manner.;To:RDoc::Markup::BlankLine o;
; [I"9When no data can be read without blocking it raises ;TI"MOpenSSL::SSL::SSLError extended by IO::WaitReadable or IO::WaitWritable.;T@o;
; [I"JIO::WaitReadable means SSL needs to read internally so read_nonblock ;TI"?should be called again when the underlying IO is readable.;T@o;
; [I"KIO::WaitWritable means SSL needs to write internally so read_nonblock ;TI"@should be called again after the underlying IO is writable.;T@o;
; [I"IOpenSSL::Buffering#read_nonblock needs two rescue clause as follows:;T@o:RDoc::Markup::Verbatim; [I"-# emulates blocking read (readpartial).
;TI"begin
;TI"* result = ssl.read_nonblock(maxlen)
;TI"rescue IO::WaitReadable
;TI" IO.select([io])
;TI"
retry
;TI"rescue IO::WaitWritable
;TI" IO.select(nil, [io])
;TI"
retry
;TI" end
;T:@format0o;
; [I"LNote that one reason that read_nonblock writes to the underlying IO is ;TI"Nwhen the peer requests a new TLS/SSL handshake. See openssl the FAQ for ;TI";more details. http://www.openssl.org/support/faq.html;T@o;
; [ I"OBy specifying a keyword argument _exception_ to +false+, you can indicate ;TI"Ithat read_nonblock should not raise an IO::Wait*able exception, but ;TI"Mreturn the symbol +:wait_writable+ or +:wait_readable+ instead. At EOF, ;TI"6it will return +nil+ instead of raising EOFError.;T:
@fileI")ext/openssl/lib/openssl/buffering.rb;T:0@omit_headings_from_table_of_contents_below000[ I"'(maxlen, buf=nil, exception: true);T@5FI"Buffering;TcRDoc::NormalModule00