streaming_crypto/core_api/stream_v2/segmenting/
decode.rs1use crate::stream_v2::segmenting::{SegmentHeader, types::{SegmentError, SegmentView}};
2
3#[inline]
7pub fn decode_segment_header(wire: &[u8]) -> Result<SegmentHeader, SegmentError> {
8 SegmentHeader::from_bytes(wire)
9}
10
11pub fn decode_segment(wire: &[u8]) -> Result<SegmentView<'_>, SegmentError> {
17 let header = SegmentHeader::from_bytes(wire)?;
18
19 let expected_len = SegmentHeader::LEN + header.wire_len() as usize;
20 if wire.len() != expected_len {
21 return Err(SegmentError::LengthMismatch {
22 expected: expected_len,
23 actual: wire.len(),
24 });
25 }
26
27 let segment_wire = &wire[SegmentHeader::LEN..expected_len];
28
29 Ok(SegmentView {
30 header,
31 wire: segment_wire,
32 })
33
34 }