pub struct MaybeTlsStream<S>(/* private fields */)
where
S: Splittable;Available on crate feature
tls only.Expand description
Stream that can be either plain TCP or TLS-encrypted, with compatibility for
[futures_util].
Implementations§
Source§impl<S> MaybeTlsStream<S>where
S: Splittable,
impl<S> MaybeTlsStream<S>where
S: Splittable,
Sourcepub fn new_plain(stream: S) -> MaybeTlsStream<S>
pub fn new_plain(stream: S) -> MaybeTlsStream<S>
Create an unencrypted stream.
Sourcepub fn new_plain_compat(stream: AsyncStream<S>) -> MaybeTlsStream<S>
pub fn new_plain_compat(stream: AsyncStream<S>) -> MaybeTlsStream<S>
Create an unencrypted stream from AsyncStream.
Sourcepub fn new_tls(stream: TlsStream<S>) -> MaybeTlsStream<S>
pub fn new_tls(stream: TlsStream<S>) -> MaybeTlsStream<S>
Create a TLS-encrypted stream.
Source§impl<S> MaybeTlsStream<S>where
S: Splittable + 'static,
<S as Splittable>::ReadHalf: AsyncRead + Unpin,
<S as Splittable>::WriteHalf: AsyncWrite + Unpin,
impl<S> MaybeTlsStream<S>where
S: Splittable + 'static,
<S as Splittable>::ReadHalf: AsyncRead + Unpin,
<S as Splittable>::WriteHalf: AsyncWrite + Unpin,
Sourcepub fn negotiated_alpn(&self) -> Option<Cow<'_, [u8]>>
pub fn negotiated_alpn(&self) -> Option<Cow<'_, [u8]>>
Returns the negotiated ALPN protocol.
Trait Implementations§
Source§impl<S> AsyncRead for MaybeTlsStream<S>where
S: Splittable + 'static,
<S as Splittable>::ReadHalf: AsyncRead + Unpin,
<S as Splittable>::WriteHalf: AsyncWrite + Unpin,
impl<S> AsyncRead for MaybeTlsStream<S>where
S: Splittable + 'static,
<S as Splittable>::ReadHalf: AsyncRead + Unpin,
<S as Splittable>::WriteHalf: AsyncWrite + Unpin,
Source§impl<S> AsyncRead for MaybeTlsStream<S>where
S: Splittable + 'static,
<S as Splittable>::ReadHalf: AsyncRead + Unpin,
<S as Splittable>::WriteHalf: AsyncWrite + Unpin,
impl<S> AsyncRead for MaybeTlsStream<S>where
S: Splittable + 'static,
<S as Splittable>::ReadHalf: AsyncRead + Unpin,
<S as Splittable>::WriteHalf: AsyncWrite + Unpin,
Source§impl<S> AsyncWrite for MaybeTlsStream<S>where
S: Splittable + 'static,
<S as Splittable>::ReadHalf: AsyncRead + Unpin,
<S as Splittable>::WriteHalf: AsyncWrite + Unpin,
impl<S> AsyncWrite for MaybeTlsStream<S>where
S: Splittable + 'static,
<S as Splittable>::ReadHalf: AsyncRead + Unpin,
<S as Splittable>::WriteHalf: AsyncWrite + Unpin,
Source§fn poll_write(
self: Pin<&mut MaybeTlsStream<S>>,
cx: &mut Context<'_>,
buf: &[u8],
) -> Poll<Result<usize, Error>>
fn poll_write( self: Pin<&mut MaybeTlsStream<S>>, cx: &mut Context<'_>, buf: &[u8], ) -> Poll<Result<usize, Error>>
Attempt to write bytes from
buf into the object. Read moreSource§fn poll_write_vectored(
self: Pin<&mut MaybeTlsStream<S>>,
cx: &mut Context<'_>,
bufs: &[IoSlice<'_>],
) -> Poll<Result<usize, Error>>
fn poll_write_vectored( self: Pin<&mut MaybeTlsStream<S>>, cx: &mut Context<'_>, bufs: &[IoSlice<'_>], ) -> Poll<Result<usize, Error>>
Attempt to write bytes from
bufs into the object using vectored
IO operations. Read moreSource§impl<S> AsyncWrite for MaybeTlsStream<S>where
S: Splittable + 'static,
<S as Splittable>::ReadHalf: AsyncRead + Unpin,
<S as Splittable>::WriteHalf: AsyncWrite + Unpin,
impl<S> AsyncWrite for MaybeTlsStream<S>where
S: Splittable + 'static,
<S as Splittable>::ReadHalf: AsyncRead + Unpin,
<S as Splittable>::WriteHalf: AsyncWrite + Unpin,
Source§async fn write_vectored<T>(&mut self, buf: T) -> BufResult<usize, T>where
T: IoVectoredBuf,
async fn write_vectored<T>(&mut self, buf: T) -> BufResult<usize, T>where
T: IoVectoredBuf,
Like
write, except that it write bytes from a buffer implements
IoVectoredBuf into the source. Read moreSource§impl<S> Debug for MaybeTlsStream<S>where
S: Debug + Splittable,
impl<S> Debug for MaybeTlsStream<S>where
S: Debug + Splittable,
Source§impl<S> IntoMaybeTlsStream<S> for MaybeTlsStream<S>where
S: Splittable,
impl<S> IntoMaybeTlsStream<S> for MaybeTlsStream<S>where
S: Splittable,
Source§fn into_maybe_tls_stream(self, _: usize, _: usize) -> MaybeTlsStream<S>
fn into_maybe_tls_stream(self, _: usize, _: usize) -> MaybeTlsStream<S>
Create
MaybeTlsStream with capacity and buffer size limit.Auto Trait Implementations§
impl<S> Freeze for MaybeTlsStream<S>
impl<S> !RefUnwindSafe for MaybeTlsStream<S>
impl<S> !Send for MaybeTlsStream<S>
impl<S> !Sync for MaybeTlsStream<S>
impl<S> Unpin for MaybeTlsStream<S>
impl<S> UnsafeUnpin for MaybeTlsStream<S>
impl<S> !UnwindSafe for MaybeTlsStream<S>
Blanket Implementations§
Source§impl<A> AsyncReadExt for A
impl<A> AsyncReadExt for A
Source§async fn append<T>(&mut self, buf: T) -> BufResult<usize, T>where
T: IoBufMut,
async fn append<T>(&mut self, buf: T) -> BufResult<usize, T>where
T: IoBufMut,
Same as
AsyncRead::read, but it appends data to the end of the
buffer; in other words, it read to the beginning of the uninitialized
area.Source§async fn read_exact<T>(&mut self, buf: T) -> BufResult<(), T>where
T: IoBufMut,
async fn read_exact<T>(&mut self, buf: T) -> BufResult<(), T>where
T: IoBufMut,
Read the exact number of bytes required to fill the buf.
Source§async fn read_to_string(&mut self, buf: String) -> BufResult<usize, String>
async fn read_to_string(&mut self, buf: String) -> BufResult<usize, String>
Read all bytes as
String until underlying reader reaches EOF.Source§async fn read_to_end<A>(
&mut self,
buf: Vec<u8, A>,
) -> BufResult<usize, Vec<u8, A>>where
A: Allocator + 'static,
async fn read_to_end<A>(
&mut self,
buf: Vec<u8, A>,
) -> BufResult<usize, Vec<u8, A>>where
A: Allocator + 'static,
Read all bytes until underlying reader reaches
EOF.Source§async fn read_vectored_exact<T>(&mut self, buf: T) -> BufResult<(), T>where
T: IoVectoredBufMut,
async fn read_vectored_exact<T>(&mut self, buf: T) -> BufResult<(), T>where
T: IoVectoredBufMut,
Read the exact number of bytes required to fill the vectored buf.
Source§fn framed<T, C, F>(
self,
codec: C,
framer: F,
) -> Framed<Self::ReadHalf, Self::WriteHalf, C, F, T, T>where
Self: Sized + Splittable,
fn framed<T, C, F>(
self,
codec: C,
framer: F,
) -> Framed<Self::ReadHalf, Self::WriteHalf, C, F, T, T>where
Self: Sized + Splittable,
Create a
framed::Framed reader/writer with the given codec and
framer.Source§fn bytes(
self,
) -> Framed<Self::ReadHalf, Self::WriteHalf, BytesCodec, NoopFramer, Bytes, Bytes>where
Self: Sized + Splittable,
fn bytes(
self,
) -> Framed<Self::ReadHalf, Self::WriteHalf, BytesCodec, NoopFramer, Bytes, Bytes>where
Self: Sized + Splittable,
Available on crate feature
bytes only.Convenience method to create a
framed::BytesFramed reader/writter
out of a splittable.Source§fn take(self, limit: u64) -> Take<Self>where
Self: Sized,
fn take(self, limit: u64) -> Take<Self>where
Self: Sized,
Creates an adaptor which reads at most
limit bytes from it. Read moreSource§async fn read_u8(&mut self) -> Result<u8, Error>
async fn read_u8(&mut self) -> Result<u8, Error>
Read a big endian
u8 from the underlying reader.Source§async fn read_u8_le(&mut self) -> Result<u8, Error>
async fn read_u8_le(&mut self) -> Result<u8, Error>
Read a little endian
u8 from the underlying reader.Source§async fn read_u16(&mut self) -> Result<u16, Error>
async fn read_u16(&mut self) -> Result<u16, Error>
Read a big endian
u16 from the underlying reader.Source§async fn read_u16_le(&mut self) -> Result<u16, Error>
async fn read_u16_le(&mut self) -> Result<u16, Error>
Read a little endian
u16 from the underlying reader.Source§async fn read_u32(&mut self) -> Result<u32, Error>
async fn read_u32(&mut self) -> Result<u32, Error>
Read a big endian
u32 from the underlying reader.Source§async fn read_u32_le(&mut self) -> Result<u32, Error>
async fn read_u32_le(&mut self) -> Result<u32, Error>
Read a little endian
u32 from the underlying reader.Source§async fn read_u64(&mut self) -> Result<u64, Error>
async fn read_u64(&mut self) -> Result<u64, Error>
Read a big endian
u64 from the underlying reader.Source§async fn read_u64_le(&mut self) -> Result<u64, Error>
async fn read_u64_le(&mut self) -> Result<u64, Error>
Read a little endian
u64 from the underlying reader.Source§async fn read_u128(&mut self) -> Result<u128, Error>
async fn read_u128(&mut self) -> Result<u128, Error>
Read a big endian
u128 from the underlying reader.Source§async fn read_u128_le(&mut self) -> Result<u128, Error>
async fn read_u128_le(&mut self) -> Result<u128, Error>
Read a little endian
u128 from the underlying reader.Source§async fn read_i8(&mut self) -> Result<i8, Error>
async fn read_i8(&mut self) -> Result<i8, Error>
Read a big endian
i8 from the underlying reader.Source§async fn read_i8_le(&mut self) -> Result<i8, Error>
async fn read_i8_le(&mut self) -> Result<i8, Error>
Read a little endian
i8 from the underlying reader.Source§async fn read_i16(&mut self) -> Result<i16, Error>
async fn read_i16(&mut self) -> Result<i16, Error>
Read a big endian
i16 from the underlying reader.Source§async fn read_i16_le(&mut self) -> Result<i16, Error>
async fn read_i16_le(&mut self) -> Result<i16, Error>
Read a little endian
i16 from the underlying reader.Source§async fn read_i32(&mut self) -> Result<i32, Error>
async fn read_i32(&mut self) -> Result<i32, Error>
Read a big endian
i32 from the underlying reader.Source§async fn read_i32_le(&mut self) -> Result<i32, Error>
async fn read_i32_le(&mut self) -> Result<i32, Error>
Read a little endian
i32 from the underlying reader.Source§async fn read_i64(&mut self) -> Result<i64, Error>
async fn read_i64(&mut self) -> Result<i64, Error>
Read a big endian
i64 from the underlying reader.Source§async fn read_i64_le(&mut self) -> Result<i64, Error>
async fn read_i64_le(&mut self) -> Result<i64, Error>
Read a little endian
i64 from the underlying reader.Source§async fn read_i128(&mut self) -> Result<i128, Error>
async fn read_i128(&mut self) -> Result<i128, Error>
Read a big endian
i128 from the underlying reader.Source§async fn read_i128_le(&mut self) -> Result<i128, Error>
async fn read_i128_le(&mut self) -> Result<i128, Error>
Read a little endian
i128 from the underlying reader.Source§async fn read_f32(&mut self) -> Result<f32, Error>
async fn read_f32(&mut self) -> Result<f32, Error>
Read a big endian
f32 from the underlying reader.Source§async fn read_f32_le(&mut self) -> Result<f32, Error>
async fn read_f32_le(&mut self) -> Result<f32, Error>
Read a little endian
f32 from the underlying reader.§impl<R> AsyncReadExt for Rwhere
R: AsyncRead + ?Sized,
impl<R> AsyncReadExt for Rwhere
R: AsyncRead + ?Sized,
§fn chain<R>(self, next: R) -> Chain<Self, R>where
Self: Sized,
R: AsyncRead,
fn chain<R>(self, next: R) -> Chain<Self, R>where
Self: Sized,
R: AsyncRead,
Creates an adaptor which will chain this stream with another. Read more
§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,
Tries to read some bytes directly into the given
buf in asynchronous
manner, returning a future type. Read more§fn read_vectored<'a>(
&'a mut self,
bufs: &'a mut [IoSliceMut<'a>],
) -> ReadVectored<'a, Self>where
Self: Unpin,
fn read_vectored<'a>(
&'a mut self,
bufs: &'a mut [IoSliceMut<'a>],
) -> ReadVectored<'a, Self>where
Self: Unpin,
Creates a future which will read from the
AsyncRead into bufs using vectored
IO operations. Read more§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,
Creates a future which will read exactly enough bytes to fill
buf,
returning an error if end of file (EOF) is hit sooner. Read more§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,
Creates a future which will read all the bytes from this
AsyncRead. Read more§fn read_to_string<'a>(
&'a mut self,
buf: &'a mut String,
) -> ReadToString<'a, Self>where
Self: Unpin,
fn read_to_string<'a>(
&'a mut self,
buf: &'a mut String,
) -> ReadToString<'a, Self>where
Self: Unpin,
Creates a future which will read all the bytes from this
AsyncRead. Read moreSource§impl<A> AsyncWriteExt for Awhere
A: AsyncWrite + ?Sized,
impl<A> AsyncWriteExt for Awhere
A: AsyncWrite + ?Sized,
Source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
Creates a “by reference” adaptor for this instance of
AsyncWrite. Read moreSource§async fn write_all<T>(&mut self, buf: T) -> BufResult<(), T>where
T: IoBuf,
async fn write_all<T>(&mut self, buf: T) -> BufResult<(), T>where
T: IoBuf,
Write the entire contents of a buffer into this writer.
Source§async fn write_vectored_all<T>(&mut self, buf: T) -> BufResult<(), T>where
T: IoVectoredBuf,
async fn write_vectored_all<T>(&mut self, buf: T) -> BufResult<(), T>where
T: IoVectoredBuf,
Write the entire contents of a buffer into this writer. Like
AsyncWrite::write_vectored, except that it tries to write the entire
contents of the buffer into this writer.Source§fn framed<T, C, F>(
self,
codec: C,
framer: F,
) -> Framed<Self::ReadHalf, Self::WriteHalf, C, F, T, T>where
Self: Sized + Splittable,
fn framed<T, C, F>(
self,
codec: C,
framer: F,
) -> Framed<Self::ReadHalf, Self::WriteHalf, C, F, T, T>where
Self: Sized + Splittable,
Create a
framed::Framed reader/writer with the given codec and
framer.Source§fn bytes(
self,
) -> Framed<Self::ReadHalf, Self::WriteHalf, BytesCodec, NoopFramer, Bytes, Bytes>where
Self: Sized + Splittable,
fn bytes(
self,
) -> Framed<Self::ReadHalf, Self::WriteHalf, BytesCodec, NoopFramer, Bytes, Bytes>where
Self: Sized + Splittable,
Available on crate feature
bytes only.Convenience method to create a
framed::BytesFramed reader/writer
out of a splittable.Source§fn write_only(self) -> WriteOnly<Self>where
Self: Sized,
fn write_only(self) -> WriteOnly<Self>where
Self: Sized,
Source§async fn write_u8(&mut self, num: u8) -> Result<(), Error>
async fn write_u8(&mut self, num: u8) -> Result<(), Error>
Write a big endian
u8 into the underlying writer.Source§async fn write_u8_le(&mut self, num: u8) -> Result<(), Error>
async fn write_u8_le(&mut self, num: u8) -> Result<(), Error>
Write a little endian
u8 into the underlying writer.Source§async fn write_u16(&mut self, num: u16) -> Result<(), Error>
async fn write_u16(&mut self, num: u16) -> Result<(), Error>
Write a big endian
u16 into the underlying writer.Source§async fn write_u16_le(&mut self, num: u16) -> Result<(), Error>
async fn write_u16_le(&mut self, num: u16) -> Result<(), Error>
Write a little endian
u16 into the underlying writer.Source§async fn write_u32(&mut self, num: u32) -> Result<(), Error>
async fn write_u32(&mut self, num: u32) -> Result<(), Error>
Write a big endian
u32 into the underlying writer.Source§async fn write_u32_le(&mut self, num: u32) -> Result<(), Error>
async fn write_u32_le(&mut self, num: u32) -> Result<(), Error>
Write a little endian
u32 into the underlying writer.Source§async fn write_u64(&mut self, num: u64) -> Result<(), Error>
async fn write_u64(&mut self, num: u64) -> Result<(), Error>
Write a big endian
u64 into the underlying writer.Source§async fn write_u64_le(&mut self, num: u64) -> Result<(), Error>
async fn write_u64_le(&mut self, num: u64) -> Result<(), Error>
Write a little endian
u64 into the underlying writer.Source§async fn write_u128(&mut self, num: u128) -> Result<(), Error>
async fn write_u128(&mut self, num: u128) -> Result<(), Error>
Write a big endian
u128 into the underlying writer.Source§async fn write_u128_le(&mut self, num: u128) -> Result<(), Error>
async fn write_u128_le(&mut self, num: u128) -> Result<(), Error>
Write a little endian
u128 into the underlying writer.Source§async fn write_i8(&mut self, num: i8) -> Result<(), Error>
async fn write_i8(&mut self, num: i8) -> Result<(), Error>
Write a big endian
i8 into the underlying writer.Source§async fn write_i8_le(&mut self, num: i8) -> Result<(), Error>
async fn write_i8_le(&mut self, num: i8) -> Result<(), Error>
Write a little endian
i8 into the underlying writer.Source§async fn write_i16(&mut self, num: i16) -> Result<(), Error>
async fn write_i16(&mut self, num: i16) -> Result<(), Error>
Write a big endian
i16 into the underlying writer.Source§async fn write_i16_le(&mut self, num: i16) -> Result<(), Error>
async fn write_i16_le(&mut self, num: i16) -> Result<(), Error>
Write a little endian
i16 into the underlying writer.Source§async fn write_i32(&mut self, num: i32) -> Result<(), Error>
async fn write_i32(&mut self, num: i32) -> Result<(), Error>
Write a big endian
i32 into the underlying writer.Source§async fn write_i32_le(&mut self, num: i32) -> Result<(), Error>
async fn write_i32_le(&mut self, num: i32) -> Result<(), Error>
Write a little endian
i32 into the underlying writer.Source§async fn write_i64(&mut self, num: i64) -> Result<(), Error>
async fn write_i64(&mut self, num: i64) -> Result<(), Error>
Write a big endian
i64 into the underlying writer.Source§async fn write_i64_le(&mut self, num: i64) -> Result<(), Error>
async fn write_i64_le(&mut self, num: i64) -> Result<(), Error>
Write a little endian
i64 into the underlying writer.Source§async fn write_i128(&mut self, num: i128) -> Result<(), Error>
async fn write_i128(&mut self, num: i128) -> Result<(), Error>
Write a big endian
i128 into the underlying writer.Source§async fn write_i128_le(&mut self, num: i128) -> Result<(), Error>
async fn write_i128_le(&mut self, num: i128) -> Result<(), Error>
Write a little endian
i128 into the underlying writer.Source§async fn write_f32(&mut self, num: f32) -> Result<(), Error>
async fn write_f32(&mut self, num: f32) -> Result<(), Error>
Write a big endian
f32 into the underlying writer.Source§async fn write_f32_le(&mut self, num: f32) -> Result<(), Error>
async fn write_f32_le(&mut self, num: f32) -> Result<(), Error>
Write a little endian
f32 into the underlying writer.§impl<W> AsyncWriteExt for Wwhere
W: AsyncWrite + ?Sized,
impl<W> AsyncWriteExt for Wwhere
W: AsyncWrite + ?Sized,
§fn flush(&mut self) -> Flush<'_, Self>where
Self: Unpin,
fn flush(&mut self) -> Flush<'_, Self>where
Self: Unpin,
Creates a future which will entirely flush this
AsyncWrite. Read more§fn close(&mut self) -> Close<'_, Self>where
Self: Unpin,
fn close(&mut self) -> Close<'_, Self>where
Self: Unpin,
Creates a future which will entirely close this
AsyncWrite.§fn write<'a>(&'a mut self, buf: &'a [u8]) -> Write<'a, Self>where
Self: Unpin,
fn write<'a>(&'a mut self, buf: &'a [u8]) -> Write<'a, Self>where
Self: Unpin,
Creates a future which will write bytes from
buf into the object. Read more§fn write_vectored<'a>(
&'a mut self,
bufs: &'a [IoSlice<'a>],
) -> WriteVectored<'a, Self>where
Self: Unpin,
fn write_vectored<'a>(
&'a mut self,
bufs: &'a [IoSlice<'a>],
) -> WriteVectored<'a, Self>where
Self: Unpin,
Creates a future which will write bytes from
bufs into the object using vectored
IO operations. Read moreSource§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more