pub struct Reader<'a> {
received_plaintext: &'a mut ChunkVecBuffer,
peer_cleanly_closed: bool,
has_seen_eof: bool,
}
Expand description
A structure that implements std::io::Read
for reading plaintext.
Fields§
§received_plaintext: &'a mut ChunkVecBuffer
§peer_cleanly_closed: bool
§has_seen_eof: bool
Trait Implementations§
source§impl<'a> Read for Reader<'a>
impl<'a> Read for Reader<'a>
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 Err(ErrorKind::UnexpectedEof.into())
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(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
read_buf
)source§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