pub struct CobsDecoderOwned { /* private fields */ }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
impl CobsDecoderOwned
Sourcepub fn new(dest_buf_size: usize) -> Self
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
Sourcepub fn feed(&mut self, data: u8) -> Result<Option<usize>, DecodeError>
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
Sourcepub fn push(&mut self, data: &[u8]) -> Result<Option<DecodeReport>, DecodeError>
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