libdd_trace_utils/msgpack_decoder/decode/
metrics.rs1use crate::msgpack_decoder::decode::buffer::Buffer;
5use crate::msgpack_decoder::decode::error::DecodeError;
6use crate::msgpack_decoder::decode::map::{read_map_len, read_map_vec};
7use crate::msgpack_decoder::decode::number::read_number;
8use crate::msgpack_decoder::decode::string::handle_null_marker;
9use crate::span::vec_map::VecMap;
10use crate::span::DeserializableTraceData;
11
12#[inline]
13pub fn read_metric_pair<T: DeserializableTraceData>(
14 buf: &mut Buffer<T>,
15) -> Result<(T::Text, f64), DecodeError> {
16 let key = buf.read_string()?;
17 let v = read_number(buf)?;
18
19 Ok((key, v))
20}
21#[inline]
22pub fn read_metrics<T: DeserializableTraceData>(
23 buf: &mut Buffer<T>,
24) -> Result<VecMap<T::Text, f64>, DecodeError> {
25 if handle_null_marker(buf) {
26 return Ok(VecMap::new());
27 }
28
29 let len = read_map_len(buf)?;
30
31 read_map_vec(len, buf, read_metric_pair)
32}