pub struct TlsStream<S: UnderlyingStream> { /* private fields */ }
Expand description
An async
stream that wraps a rustls
connection and a TCP socket.
Implementations§
Source§impl TlsStream<TcpStream>
impl TlsStream<TcpStream>
pub fn linger(&self) -> Result<Option<Duration>, Error>
pub fn set_linger(&self, dur: Option<Duration>) -> Result<(), Error>
Sourcepub fn peer_addr(&self) -> Result<SocketAddr, Error>
pub fn peer_addr(&self) -> Result<SocketAddr, Error>
Returns the peer address of this socket.
Sourcepub fn local_addr(&self) -> Result<SocketAddr, Error>
pub fn local_addr(&self) -> Result<SocketAddr, Error>
Returns the local address of this socket.
Source§impl TlsStream<UnixStream>
impl TlsStream<UnixStream>
pub fn peer_addr(&self) -> Result<SocketAddr, Error>
pub fn local_addr(&self) -> Result<SocketAddr, Error>
Source§impl<S: UnderlyingStream + 'static> TlsStream<S>
impl<S: UnderlyingStream + 'static> TlsStream<S>
pub fn new_client_side( tcp: S, tls: ClientConnection, buffer_size: Option<NonZeroUsize>, ) -> Self
pub fn new_client_side_from( tcp: S, connection: ClientConnection, buffer_size: Option<NonZeroUsize>, ) -> Self
pub fn new_server_side( tcp: S, tls_config: Arc<ServerConfig>, buffer_size: Option<NonZeroUsize>, ) -> Self
Sourcepub fn new_server_side_acceptor(
tcp: S,
server_config_provider: ServerConfigProvider,
buffer_size: Option<NonZeroUsize>,
) -> Self
pub fn new_server_side_acceptor( tcp: S, server_config_provider: ServerConfigProvider, buffer_size: Option<NonZeroUsize>, ) -> Self
Create a server-side TLS connection that provides the ServerConfig
dynamically
based on the ClientHello
message. This may be used to provide a different server
certificate or ALPN configuration depending on the requested hostname.
Sourcepub fn new_server_side_from_acceptor(
acceptor: Acceptor,
tcp: S,
server_config_provider: ServerConfigProvider,
buffer_size: Option<NonZeroUsize>,
) -> Self
pub fn new_server_side_from_acceptor( acceptor: Acceptor, tcp: S, server_config_provider: ServerConfigProvider, buffer_size: Option<NonZeroUsize>, ) -> Self
Create a server-side TLS connection that provides the ServerConfig
dynamically
based on the ClientHello
message. This may be used to provide a different server
certificate or ALPN configuration depending on the requested hostname.
This allows the caller to provide an Acceptor
which may be non-default in some
way, perhaps stuffed with prefix bytes or a full handshake to emulate.
pub fn new_server_side_from( tcp: S, connection: ServerConnection, buffer_size: Option<NonZeroUsize>, ) -> Self
Sourcepub fn try_into_inner(self) -> Result<(S, Connection), Self>
pub fn try_into_inner(self) -> Result<(S, Connection), Self>
Attempt to retrieve the inner stream and connection.
pub fn into_split(self) -> (TlsStreamRead<S>, TlsStreamWrite<S>)
Sourcepub fn connection(&self) -> Option<&Connection>
pub fn connection(&self) -> Option<&Connection>
If the stream is open, returns the underlying rustls connection.
pub async fn into_inner(self) -> Result<(S, Connection)>
pub fn poll_handshake( &mut self, cx: &mut Context<'_>, ) -> Poll<Result<TlsHandshake>>
pub async fn handshake(&mut self) -> Result<TlsHandshake>
Sourcepub fn try_handshake(&self) -> Result<Option<TlsHandshake>>
pub fn try_handshake(&self) -> Result<Option<TlsHandshake>>
Try to get the handshake, if one exists.
pub async fn close(self) -> Result<()>
Source§impl<S: UnderlyingStream> TlsStream<S>
impl<S: UnderlyingStream> TlsStream<S>
Sourcepub fn underlying_stream(&self) -> Option<&S>
pub fn underlying_stream(&self) -> Option<&S>
If the stream is open or handshaking, returns the underlying TCP stream.
Trait Implementations§
Source§impl<S: UnderlyingStream> AsyncRead for TlsStream<S>
impl<S: UnderlyingStream> AsyncRead for TlsStream<S>
Source§impl<S: UnderlyingStream> AsyncWrite for TlsStream<S>
impl<S: UnderlyingStream> AsyncWrite for TlsStream<S>
Source§fn poll_write(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
buf: &[u8],
) -> Poll<Result<usize>>
fn poll_write( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8], ) -> Poll<Result<usize>>
buf
into the object. Read moreSource§fn poll_write_vectored(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
bufs: &[IoSlice<'_>],
) -> Poll<Result<usize, Error>>
fn poll_write_vectored( self: Pin<&mut Self>, cx: &mut Context<'_>, bufs: &[IoSlice<'_>], ) -> Poll<Result<usize, Error>>
poll_write
, except that it writes from a slice of buffers. Read moreSource§fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>>
fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>>
Source§fn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
poll_write_vectored
implementation. Read moreSource§impl<S: UnderlyingStream> Debug for TlsStream<S>
impl<S: UnderlyingStream> Debug for TlsStream<S>
Auto Trait Implementations§
impl<S> Freeze for TlsStream<S>
impl<S> !RefUnwindSafe for TlsStream<S>
impl<S> Send for TlsStream<S>
impl<S> Sync for TlsStream<S>
impl<S> Unpin for TlsStream<S>
impl<S> !UnwindSafe for TlsStream<S>
Blanket Implementations§
Source§impl<R> AsyncReadExt for R
impl<R> AsyncReadExt for R
Source§fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self>where
Self: Unpin,
fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self>where
Self: Unpin,
Source§fn read_buf<'a, B>(&'a mut self, buf: &'a mut B) -> ReadBuf<'a, Self, B>
fn read_buf<'a, B>(&'a mut self, buf: &'a mut B) -> ReadBuf<'a, Self, B>
Source§fn read_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self>where
Self: Unpin,
fn read_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self>where
Self: Unpin,
buf
. Read moreSource§fn read_u8(&mut self) -> ReadU8<&mut Self>where
Self: Unpin,
fn read_u8(&mut self) -> ReadU8<&mut Self>where
Self: Unpin,
Source§fn read_i8(&mut self) -> ReadI8<&mut Self>where
Self: Unpin,
fn read_i8(&mut self) -> ReadI8<&mut Self>where
Self: Unpin,
Source§fn read_u16(&mut self) -> ReadU16<&mut Self>where
Self: Unpin,
fn read_u16(&mut self) -> ReadU16<&mut Self>where
Self: Unpin,
Source§fn read_i16(&mut self) -> ReadI16<&mut Self>where
Self: Unpin,
fn read_i16(&mut self) -> ReadI16<&mut Self>where
Self: Unpin,
Source§fn read_u32(&mut self) -> ReadU32<&mut Self>where
Self: Unpin,
fn read_u32(&mut self) -> ReadU32<&mut Self>where
Self: Unpin,
Source§fn read_i32(&mut self) -> ReadI32<&mut Self>where
Self: Unpin,
fn read_i32(&mut self) -> ReadI32<&mut Self>where
Self: Unpin,
Source§fn read_u64(&mut self) -> ReadU64<&mut Self>where
Self: Unpin,
fn read_u64(&mut self) -> ReadU64<&mut Self>where
Self: Unpin,
Source§fn read_i64(&mut self) -> ReadI64<&mut Self>where
Self: Unpin,
fn read_i64(&mut self) -> ReadI64<&mut Self>where
Self: Unpin,
Source§fn read_u128(&mut self) -> ReadU128<&mut Self>where
Self: Unpin,
fn read_u128(&mut self) -> ReadU128<&mut Self>where
Self: Unpin,
Source§fn read_i128(&mut self) -> ReadI128<&mut Self>where
Self: Unpin,
fn read_i128(&mut self) -> ReadI128<&mut Self>where
Self: Unpin,
Source§fn read_f32(&mut self) -> ReadF32<&mut Self>where
Self: Unpin,
fn read_f32(&mut self) -> ReadF32<&mut Self>where
Self: Unpin,
Source§fn read_f64(&mut self) -> ReadF64<&mut Self>where
Self: Unpin,
fn read_f64(&mut self) -> ReadF64<&mut Self>where
Self: Unpin,
Source§fn read_u16_le(&mut self) -> ReadU16Le<&mut Self>where
Self: Unpin,
fn read_u16_le(&mut self) -> ReadU16Le<&mut Self>where
Self: Unpin,
Source§fn read_i16_le(&mut self) -> ReadI16Le<&mut Self>where
Self: Unpin,
fn read_i16_le(&mut self) -> ReadI16Le<&mut Self>where
Self: Unpin,
Source§fn read_u32_le(&mut self) -> ReadU32Le<&mut Self>where
Self: Unpin,
fn read_u32_le(&mut self) -> ReadU32Le<&mut Self>where
Self: Unpin,
Source§fn read_i32_le(&mut self) -> ReadI32Le<&mut Self>where
Self: Unpin,
fn read_i32_le(&mut self) -> ReadI32Le<&mut Self>where
Self: Unpin,
Source§fn read_u64_le(&mut self) -> ReadU64Le<&mut Self>where
Self: Unpin,
fn read_u64_le(&mut self) -> ReadU64Le<&mut Self>where
Self: Unpin,
Source§fn read_i64_le(&mut self) -> ReadI64Le<&mut Self>where
Self: Unpin,
fn read_i64_le(&mut self) -> ReadI64Le<&mut Self>where
Self: Unpin,
Source§fn read_u128_le(&mut self) -> ReadU128Le<&mut Self>where
Self: Unpin,
fn read_u128_le(&mut self) -> ReadU128Le<&mut Self>where
Self: Unpin,
Source§fn read_i128_le(&mut self) -> ReadI128Le<&mut Self>where
Self: Unpin,
fn read_i128_le(&mut self) -> ReadI128Le<&mut Self>where
Self: Unpin,
Source§fn read_f32_le(&mut self) -> ReadF32Le<&mut Self>where
Self: Unpin,
fn read_f32_le(&mut self) -> ReadF32Le<&mut Self>where
Self: Unpin,
Source§fn read_f64_le(&mut self) -> ReadF64Le<&mut Self>where
Self: Unpin,
fn read_f64_le(&mut self) -> ReadF64Le<&mut Self>where
Self: Unpin,
Source§fn read_to_end<'a>(&'a mut self, buf: &'a mut Vec<u8>) -> ReadToEnd<'a, Self>where
Self: Unpin,
fn read_to_end<'a>(&'a mut self, buf: &'a mut Vec<u8>) -> ReadToEnd<'a, Self>where
Self: Unpin,
buf
. Read more