[go: up one dir, main page]

CobsDecoderOwned

Struct CobsDecoderOwned 

Source
pub struct CobsDecoderOwned { /* private fields */ }
Available on crate feature alloc only.
Expand description

The CobsDecoderOwned type is used to decode a stream of bytes to a given mutable output slice. It owns the decoding buffer.

This structure allocates the buffer once at construction but does not perform runtime allocations. This simplifies keeping a streaming decoder structure as a field of a structure because it does not require a lifetime.

Implementations§

Source§

impl CobsDecoderOwned

Source

pub fn new(dest_buf_size: usize) -> Self

Create a new streaming Cobs Decoder. Provide the output buffer for the decoded message to be placed in

Source

pub fn feed(&mut self, data: u8) -> Result<Option<usize>, DecodeError>

Feed a single byte into the streaming decoder. Return values mean:

  • Ok(None) - State machine okay, more data needed
  • Ok(Some(N)) - A message of N bytes was successfully decoded
  • Err(DecodeError) - Message decoding failed

NOTE: Sentinel value must be included in the input to this function for the decoding to complete

Source

pub fn push(&mut self, data: &[u8]) -> Result<Option<DecodeReport>, DecodeError>

Push a slice of bytes into the streaming CobsDecoder. Return values mean:

  • Ok(None) - State machine okay, more data needed
  • Ok(Some(DecodeReport))) - A message was successfully decoded. The parse size of the report specifies the consumed bytes of the passed data chunk.
  • Err(DecodeError) - Message decoding failed

If the decoder is used for continuous decoding, the user must take care of feeding any undecoded bytes of the input data back into the decoder. This can be done by Self::pushing the undecoded bytes (the last X bytes of the input with X being the length of the input minus the parsed length) into the decoder after a frame was decoded.

NOTE: Sentinel value must be included in the input to this function for the decoding to complete

Source

pub fn dest(&self) -> &[u8]

Destination buffer which contains decoded frames.

Source

pub fn dest_mut(&mut self) -> &mut [u8]

Destination buffer which contains decoded frames.

This allows using the buffer for other purposes than decoding after a frame was found. Changing the buffer in any other state might corrupt a frame which might currently be decoded.

Source

pub fn reset(&mut self)

Reset the decoding state machine.

Trait Implementations§

Source§

impl Debug for CobsDecoderOwned

Source§

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

Formats the value using the given formatter. 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.

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.