Struct WriteHalf

Source
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>>

Source

pub fn new(inner: T, encryptor: Encryptor<A, S>) -> Self

Source

pub fn with_capacity( inner: T, encryptor: Encryptor<A, S>, size: usize, chunk_size: usize, ) -> Self

Trait Implementations§

Source§

impl<T, A, S> AsyncWrite for WriteHalf<T, Encryptor<A, S>>

Source§

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>>

Attempts to flush the object, ensuring that any buffered data reach their destination. Read more
Source§

fn poll_shutdown( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Result<(), Error>>

Initiates or attempts to shut down this writer, returning success when the I/O connection has completely shut down. Read more
Source§

fn poll_write_vectored( self: Pin<&mut Self>, cx: &mut Context<'_>, bufs: &[IoSlice<'_>], ) -> Poll<Result<usize, Error>>

Like poll_write, except that it writes from a slice of buffers. Read more
Source§

fn is_write_vectored(&self) -> bool

Determines if this writer has an efficient poll_write_vectored implementation. Read more
Source§

impl<'__pin, T, U> Unpin for WriteHalf<T, U>
where PinnedFieldsOf<__Origin<'__pin, T, U>>: Unpin,

Auto Trait Implementations§

§

impl<T, U> Freeze for WriteHalf<T, U>
where T: Freeze, U: Freeze,

§

impl<T, U> RefUnwindSafe for WriteHalf<T, U>

§

impl<T, U> Send for WriteHalf<T, U>
where T: Send, U: Send,

§

impl<T, U> Sync for WriteHalf<T, U>
where T: Sync, U: Sync,

§

impl<T, U> UnwindSafe for WriteHalf<T, U>
where T: UnwindSafe, U: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.