libdd_trace_utils/msgpack_decoder/decode/
metrics.rs

1// Copyright 2024-Present Datadog, Inc. https://www.datadoghq.com/
2// SPDX-License-Identifier: Apache-2.0
3
4use 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}