MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / read_framed

Function read_framed

nodedb-array/src/codec/tile_decode.rs:24–47  ·  view source on GitHub ↗
(data: &'a [u8], pos: &mut usize)

Source from the content-addressed store, hash-verified

22const SUPPORTED_PAYLOAD_VERSION: u8 = 1;
23
24fn read_framed<'a>(data: &'a [u8], pos: &mut usize) -> ArrayResult<&'a [u8]> {
25 if *pos + 4 > data.len() {
26 return Err(ArrayError::SegmentCorruption {
27 detail: "framed block: truncated length".into(),
28 });
29 }
30 let len = u32::from_le_bytes(
31 data[*pos..*pos + 4]
32 .try_into()
33 .expect("invariant: bounds-checked above (*pos + 4 <= data.len())"),
34 ) as usize;
35 *pos += 4;
36 if *pos + len > data.len() {
37 return Err(ArrayError::SegmentCorruption {
38 detail: format!(
39 "framed block: body truncated (need {len}, have {})",
40 data.len() - *pos
41 ),
42 });
43 }
44 let slice = &data[*pos..*pos + len];
45 *pos += len;
46 Ok(slice)
47}
48
49/// Decode a tile payload previously written by `encode_sparse_tile`.
50///

Callers 1

decode_structuralFunction · 0.70

Calls 2

lenMethod · 0.45
expectMethod · 0.45

Tested by

no test coverage detected