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

Function read_metric_segment_from_bytes

nodedb/src/engine/timeseries/reader.rs:193–219  ·  view source on GitHub ↗

Read and decode a metric segment from in-memory bytes.

(data: &[u8])

Source from the content-addressed store, hash-verified

191
192/// Read and decode a metric segment from in-memory bytes.
193pub fn read_metric_segment_from_bytes(data: &[u8]) -> Result<MetricSegmentData, SegmentReadError> {
194 let header_end = decode_tseg_header(data)?;
195 let mut cur = Cursor::new(&data[header_end..]);
196
197 let kind = cur
198 .read_u8()
199 .ok_or(SegmentReadError::TooSmall { size: data.len() })?;
200 if kind != KIND_METRIC {
201 return Err(SegmentReadError::UnknownKind { kind });
202 }
203
204 let _sample_count = cur
205 .read_u64_le()
206 .ok_or(SegmentReadError::TooSmall { size: data.len() })?;
207 let block_len = cur
208 .read_u32_le()
209 .ok_or(SegmentReadError::TooSmall { size: data.len() })? as usize;
210
211 let gorilla_block = cur
212 .read_bytes(block_len)
213 .ok_or(SegmentReadError::TooSmall { size: data.len() })?;
214
215 let mut decoder = GorillaDecoder::new(gorilla_block);
216 let samples = decoder.decode_all();
217
218 Ok(MetricSegmentData { samples })
219}
220
221/// Read and decode a log segment from disk.
222///

Callers 2

read_metric_segmentFunction · 0.85
read_segmentFunction · 0.85

Calls 7

decode_tseg_headerFunction · 0.85
read_u8Method · 0.80
read_u64_leMethod · 0.80
read_u32_leMethod · 0.80
read_bytesMethod · 0.80
lenMethod · 0.45
decode_allMethod · 0.45

Tested by

no test coverage detected