Skip to main content

MessageHandler

Struct MessageHandler 

Source
pub struct MessageHandler<'a, 'm, Side: SideData> { /* private fields */ }
Expand description

Driver for handling messages from the TlsInputBuffer.

Must be driven to completion to make progress, by calling either Self::handle_all() or repeatedly calling Self::next_payload() until it returns None.

Backpressure is provided by the TlsInputBuffer implementation. When using a VecInput buffer, VecInput::read() will not ingest more data once the internal buffer is full.

Implementations§

Source§

impl<'a, 'm, Side: SideData> MessageHandler<'a, 'm, Side>

Source

pub fn handle_all(self, buf: &mut Vec<u8>) -> Result<IoState, Error>

Handles all complete messages from the input buffer.

Writes any plaintext application data from the input into buf, and returns the I/O state of the connection after processing the last message. If an error is returned, the connection is in a fatal error state and no further progress can be made. After an error is received from this function, you should not continue to fill up the buffer.

However, you may call the other methods on the connection, including Connection::send_close_notify(). Any alert produced by the error will have been appended to the tls buffer; most likely you will want to send that data to the peer and then close the underlying connection.

Source

pub fn next_payload(&mut self) -> Option<Result<Payload<'_>, Error>>

Yields the first payload of plaintext application data from the input buffer.

Should be called repeatedly until it returns None, at which point the input buffer no longer contains any complete messages and should be refilled by the application.

Source

pub fn state(self) -> IoState

The I/O state of the connection after processing the last message.

Trait Implementations§

Source§

impl<S: SideData> Debug for MessageHandler<'_, '_, S>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a, 'm, Side: SideData + Side> Drop for MessageHandler<'a, 'm, Side>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

§

impl<'a, 'm, Side> !RefUnwindSafe for MessageHandler<'a, 'm, Side>

§

impl<'a, 'm, Side> !Send for MessageHandler<'a, 'm, Side>

§

impl<'a, 'm, Side> !Sync for MessageHandler<'a, 'm, Side>

§

impl<'a, 'm, Side> !UnwindSafe for MessageHandler<'a, 'm, Side>

§

impl<'a, 'm, Side> Freeze for MessageHandler<'a, 'm, Side>

§

impl<'a, 'm, Side> Unpin for MessageHandler<'a, 'm, Side>

§

impl<'a, 'm, Side> UnsafeUnpin for MessageHandler<'a, 'm, Side>

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.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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, 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.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more