libdd_trace_utils/msgpack_decoder/decode/
metrics.rs1use crate::msgpack_decoder::decode::error::DecodeError;
5use crate::msgpack_decoder::decode::map::{read_map, read_map_len};
6use crate::msgpack_decoder::decode::number::read_number_slice;
7use crate::msgpack_decoder::decode::string::{handle_null_marker, read_string_ref};
8use std::collections::HashMap;
9
10#[inline]
11pub fn read_metric_pair<'a>(buf: &mut &'a [u8]) -> Result<(&'a str, f64), DecodeError> {
12 let key = read_string_ref(buf)?;
13 let v = read_number_slice(buf)?;
14
15 Ok((key, v))
16}
17#[inline]
18pub fn read_metrics<'a>(buf: &mut &'a [u8]) -> Result<HashMap<&'a str, f64>, DecodeError> {
19 if handle_null_marker(buf) {
20 return Ok(HashMap::default());
21 }
22
23 let len = read_map_len(buf)?;
24
25 read_map(len, buf, read_metric_pair)
26}