pub struct Reader<'a> { /* private fields */ }
std
only.Expand description
A structure that implements std::io::Read
for reading plaintext.
Implementations§
Source§impl<'a> Reader<'a>
impl<'a> Reader<'a>
Sourcepub fn into_first_chunk(self) -> Result<&'a [u8]>
pub fn into_first_chunk(self) -> Result<&'a [u8]>
Obtain a chunk of plaintext data received from the peer over this TLS connection.
This method consumes self
so that it can return a slice whose lifetime is bounded by
the ConnectionCommon
that created this Reader
.
Trait Implementations§
Source§impl BufRead for Reader<'_>
impl BufRead for Reader<'_>
Source§fn fill_buf(&mut self) -> Result<&[u8]>
fn fill_buf(&mut self) -> Result<&[u8]>
Obtain a chunk of plaintext data received from the peer over this TLS connection.
This reads the same data as Reader::read()
, but returns a reference instead of
copying the data.
The caller should call Reader::consume()
afterward to advance the buffer.
See Reader::into_first_chunk()
for a version of this function that returns a
buffer with a longer lifetime.
Source§fn consume(&mut self, amt: usize)
fn consume(&mut self, amt: usize)
amt
bytes have been consumed from the buffer,
so they should no longer be returned in calls to read
. Read moreSource§fn has_data_left(&mut self) -> Result<bool, Error>
fn has_data_left(&mut self) -> Result<bool, Error>
buf_read_has_data_left
)Read
has any data left to be read. Read more1.83.0 · Source§fn skip_until(&mut self, byte: u8) -> Result<usize, Error>
fn skip_until(&mut self, byte: u8) -> Result<usize, Error>
byte
or EOF is reached. Read more1.0.0 · Source§fn read_line(&mut self, buf: &mut String) -> Result<usize, Error>
fn read_line(&mut self, buf: &mut String) -> Result<usize, Error>
0xA
byte) is reached, and append
them to the provided String
buffer. Read moreSource§impl Read for Reader<'_>
impl Read for Reader<'_>
Source§fn read(&mut self, buf: &mut [u8]) -> Result<usize>
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
Obtain plaintext data received from the peer over this TLS connection.
If the peer closes the TLS session cleanly, this returns Ok(0)
once all
the pending data has been read. No further data can be received on that
connection, so the underlying TCP connection should be half-closed too.
If the peer closes the TLS session uncleanly (a TCP EOF without sending a
close_notify
alert) this function returns a std::io::Error
of type
ErrorKind::UnexpectedEof
once any pending data has been read.
Note that support for close_notify
varies in peer TLS libraries: many do not
support it and uncleanly close the TCP connection (this might be
vulnerable to truncation attacks depending on the application protocol).
This means applications using rustls must both handle EOF
from this function, and unexpected EOF of the underlying TCP connection.
If there are no bytes to read, this returns Err(ErrorKind::WouldBlock.into())
.
You may learn the number of bytes available at any time by inspecting
the return of Connection::process_new_packets
.
Source§fn read_buf(&mut self, cursor: BorrowedCursor<'_>) -> Result<()>
🔬This is a nightly-only experimental API. (read_buf
)
fn read_buf(&mut self, cursor: BorrowedCursor<'_>) -> Result<()>
read_buf
)Obtain plaintext data received from the peer over this TLS connection.
If the peer closes the TLS session, this returns Ok(())
without filling
any more of the buffer once all the pending data has been read. No further
data can be received on that connection, so the underlying TCP connection
should be half-closed too.
If the peer closes the TLS session uncleanly (a TCP EOF without sending a
close_notify
alert) this function returns a std::io::Error
of type
ErrorKind::UnexpectedEof
once any pending data has been read.
Note that support for close_notify
varies in peer TLS libraries: many do not
support it and uncleanly close the TCP connection (this might be
vulnerable to truncation attacks depending on the application protocol).
This means applications using rustls must both handle EOF
from this function, and unexpected EOF of the underlying TCP connection.
If there are no bytes to read, this returns Err(ErrorKind::WouldBlock.into())
.
You may learn the number of bytes available at any time by inspecting
the return of Connection::process_new_packets
.
1.36.0 · Source§fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
read
, except that it reads into a slice of buffers. Read moreSource§fn is_read_vectored(&self) -> bool
fn is_read_vectored(&self) -> bool
can_vector
)1.0.0 · Source§fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
buf
. Read more1.0.0 · Source§fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
buf
. Read more1.6.0 · Source§fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
buf
. Read moreSource§fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
read_buf
)cursor
. Read more1.0.0 · Source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
Read
. Read more