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, read_map_len};
7use crate::msgpack_decoder::decode::number::read_number;
8use crate::msgpack_decoder::decode::string::handle_null_marker;
9use crate::span::DeserializableTraceData;
10use std::collections::HashMap;
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<HashMap<T::Text, f64>, DecodeError> {
25 if handle_null_marker(buf) {
26 return Ok(HashMap::default());
27 }
28
29 let len = read_map_len(buf)?;
30
31 read_map(len, buf, read_metric_pair)
32}