Skip to main content

CapsuleDecoder

Struct CapsuleDecoder 

Source
pub struct CapsuleDecoder { /* private fields */ }
Expand description

An incremental capsule decoder.

Feed it bytes with CapsuleDecoder::push, then drain with CapsuleDecoder::next_capsule until it yields None.

Implementations§

Source§

impl CapsuleDecoder

Source

pub fn new() -> Self

A decoder positioned at the start of a capsule sequence.

Source

pub fn push(&mut self, chunk: &[u8])

Adds received bytes. Any number, split anywhere.

Taken by slice because that is all this does with them: the bytes are copied into the decoder’s own buffer, where the next capsule is cut out of them, so nothing is gained by owning the chunk they arrived in.

Source

pub fn at_capsule_boundary(&self) -> bool

Whether the sequence is currently between capsules.

False at end of stream means the peer stopped mid-capsule, which RFC 9297 §3.3 makes a malformed message.

Source

pub fn next_capsule(&mut self) -> Result<Option<Capsule>, Error>

Decodes the next capsule of interest.

Ok(None) means more bytes are needed — not an error. Unknown capsule types are consumed internally and never returned.

Trait Implementations§

Source§

impl Debug for CapsuleDecoder

Source§

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

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

impl Default for CapsuleDecoder

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

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