pub struct WriteHalf<T, U> { /* private fields */ }
Expand description
Async Encryption Write Half.
This struct has an internal buffer to hold encrypted bytes that were not written to the inner writter. Under “normal” circunstances, the internal buffer will be seldom used.
Implementations§
Source§impl<T, A, S> WriteHalf<T, Encryptor<A, S>>where
T: AsyncWrite,
S: StreamPrimitive<A>,
A: AeadInPlace,
A::NonceSize: Sub<<S as StreamPrimitive<A>>::NonceOverhead>,
NonceSize<A, S>: ArrayLength<u8>,
impl<T, A, S> WriteHalf<T, Encryptor<A, S>>where
T: AsyncWrite,
S: StreamPrimitive<A>,
A: AeadInPlace,
A::NonceSize: Sub<<S as StreamPrimitive<A>>::NonceOverhead>,
NonceSize<A, S>: ArrayLength<u8>,
Trait Implementations§
Source§impl<T, A, S> AsyncWrite for WriteHalf<T, Encryptor<A, S>>where
T: AsyncWrite + Unpin,
S: StreamPrimitive<A>,
A: AeadInPlace,
A::NonceSize: Sub<<S as StreamPrimitive<A>>::NonceOverhead>,
NonceSize<A, S>: ArrayLength<u8>,
impl<T, A, S> AsyncWrite for WriteHalf<T, Encryptor<A, S>>where
T: AsyncWrite + Unpin,
S: StreamPrimitive<A>,
A: AeadInPlace,
A::NonceSize: Sub<<S as StreamPrimitive<A>>::NonceOverhead>,
NonceSize<A, S>: ArrayLength<u8>,
Source§fn poll_write(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
buf: &[u8],
) -> Poll<Result<usize, Error>>
fn poll_write( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8], ) -> Poll<Result<usize, Error>>
Encrypt buf
content, write into self.inner
and returns the number of bytes
encrypted.
Since tokio runtime will call this function repeatedly with the same contents when
Poll::Pending is returned, this function may return Poll::Pending only when
trying to flush the internal buffer, otherwise it will always return Poll::Ready(Ok(n))
,
even if the inner writer fails.
This behavior was adopted to guarantee parity with the reading counterpart,
the contents of buf
must be encrypted only once, if the internal writing operation fails,
the already encrypted contents will be written into the internal buffer instead.
It is guaranteed that 0 <= n <= buf.len()
Internally, the contents of buf
will be splitted into chunks of self.chunk_size
size,
default to 1024 bytes, to avoid allocating a huge Vec<u8>
when encrypting larger messages.
Source§fn poll_flush(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
) -> Poll<Result<(), Error>>
fn poll_flush( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Result<(), Error>>
Source§fn poll_shutdown(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
) -> Poll<Result<(), Error>>
fn poll_shutdown( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Result<(), Error>>
Source§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 is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
poll_write_vectored
implementation. Read more