pub struct SslStream<S: Unpin> { /* private fields */ }Expand description
An asynchronous version of openssl::ssl::SslStream.
Each write stages at most 16 KiB. If it returns Pending, that chunk remains queued for an
OpenSSL retry. Cancelling the write future does not discard the staged chunk; the next TLS
operation retries it first. The rest of the original input is not retained. This also
applies to TLS 1.3 early-data writes.
A cancelled AsyncWrite::poll_write followed by a new write from the same address and with
the same length and staged prefix cannot be distinguished from polling the original write
again. Use write_cancellable for distinct write operations, or
flush the stream before reusing that buffer for a separate trait write.
Implementations§
Source§impl<S> SslStream<S>
impl<S> SslStream<S>
Sourcepub fn new(ssl: Ssl, stream: S) -> Result<Self, ErrorStack>
pub fn new(ssl: Ssl, stream: S) -> Result<Self, ErrorStack>
Like SslStream::new.
Sourcepub async fn write_cancellable(
self: Pin<&mut Self>,
buf: &[u8],
) -> Result<usize>
pub async fn write_cancellable( self: Pin<&mut Self>, buf: &[u8], ) -> Result<usize>
Writes once, keeping this call distinct from later calls with the same buffer.
If this future is cancelled while a write is pending, a later write or flush finishes the
queued bytes. A subsequent call to write_cancellable then sends a separate copy even if
it uses the same buffer. The returned count may be less than buf.len().
Sourcepub fn poll_connect(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
) -> Poll<Result<(), Error>>
pub fn poll_connect( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Result<(), Error>>
Like SslStream::connect.
Sourcepub async fn connect(self: Pin<&mut Self>) -> Result<(), Error>
pub async fn connect(self: Pin<&mut Self>) -> Result<(), Error>
A convenience method wrapping poll_connect.
Sourcepub fn poll_accept(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
) -> Poll<Result<(), Error>>
pub fn poll_accept( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Result<(), Error>>
Like SslStream::accept.
Sourcepub async fn accept(self: Pin<&mut Self>) -> Result<(), Error>
pub async fn accept(self: Pin<&mut Self>) -> Result<(), Error>
A convenience method wrapping poll_accept.
Sourcepub fn poll_do_handshake(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
) -> Poll<Result<(), Error>>
pub fn poll_do_handshake( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Result<(), Error>>
Like SslStream::do_handshake.
Sourcepub async fn do_handshake(self: Pin<&mut Self>) -> Result<(), Error>
pub async fn do_handshake(self: Pin<&mut Self>) -> Result<(), Error>
A convenience method wrapping poll_do_handshake.
Sourcepub fn poll_peek(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
buf: &mut [u8],
) -> Poll<Result<usize, Error>>
pub fn poll_peek( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &mut [u8], ) -> Poll<Result<usize, Error>>
Like SslStream::ssl_peek.
Sourcepub async fn peek(self: Pin<&mut Self>, buf: &mut [u8]) -> Result<usize, Error>
pub async fn peek(self: Pin<&mut Self>, buf: &mut [u8]) -> Result<usize, Error>
A convenience method wrapping poll_peek.
Sourcepub fn poll_read_early_data(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
buf: &mut [u8],
) -> Poll<Result<usize, Error>>
pub fn poll_read_early_data( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &mut [u8], ) -> Poll<Result<usize, Error>>
Sourcepub async fn read_early_data(
self: Pin<&mut Self>,
buf: &mut [u8],
) -> Result<usize, Error>
pub async fn read_early_data( self: Pin<&mut Self>, buf: &mut [u8], ) -> Result<usize, Error>
A convenience method wrapping poll_read_early_data.
Sourcepub fn poll_write_early_data(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
buf: &[u8],
) -> Poll<Result<usize, Error>>
pub fn poll_write_early_data( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8], ) -> Poll<Result<usize, Error>>
Like SslStream::write_early_data.
If this returns Pending, the bytes are retained for a retry. Flush before using the same
buffer for a separate write after cancellation, or use
write_early_data to distinguish separate calls.
Sourcepub async fn write_early_data(
self: Pin<&mut Self>,
buf: &[u8],
) -> Result<usize, Error>
pub async fn write_early_data( self: Pin<&mut Self>, buf: &[u8], ) -> Result<usize, Error>
Writes TLS 1.3 early data as a distinct operation, including after cancellation.
If this future is cancelled while an early-data write is pending, a later write or flush
finishes the queued bytes. A subsequent call sends a separate copy even if it uses the
same buffer. The returned count may be less than buf.len().
Source§impl<S: Unpin> SslStream<S>
impl<S: Unpin> SslStream<S>
Trait Implementations§
Source§impl<S> AsyncRead for SslStream<S>
impl<S> AsyncRead for SslStream<S>
Source§impl<S> AsyncWrite for SslStream<S>
impl<S> AsyncWrite for SslStream<S>
Source§fn poll_write(
self: Pin<&mut Self>,
ctx: &mut Context<'_>,
buf: &[u8],
) -> Poll<Result<usize>>
fn poll_write( self: Pin<&mut Self>, ctx: &mut Context<'_>, buf: &[u8], ) -> Poll<Result<usize>>
buf into the object. Read more