Skip to main content

libdd_trace_utils/
tracer_metadata.rs

1// Copyright 2024-Present Datadog, Inc. https://www.datadoghq.com/
2// SPDX-License-Identifier: Apache-2.0
3
4use crate::tracer_header_tags::{TracerGenericTags, TracerHeaderTags};
5use http::HeaderMap;
6
7#[derive(Clone, Default, Debug)]
8pub struct TracerMetadata {
9    pub hostname: String,
10    pub env: String,
11    pub app_version: String,
12    pub runtime_id: String,
13    pub service: String,
14    pub tracer_version: String,
15    pub language: String,
16    pub language_version: String,
17    pub language_interpreter: String,
18    pub language_interpreter_vendor: String,
19    pub container_id: String,
20    pub git_commit_sha: String,
21    pub process_tags: String,
22    pub client_computed_stats: bool,
23    pub client_computed_top_level: bool,
24}
25
26impl<'a> From<&'a TracerMetadata> for TracerHeaderTags<'a> {
27    fn from(tags: &'a TracerMetadata) -> TracerHeaderTags<'a> {
28        TracerHeaderTags::<'_> {
29            lang: &tags.language,
30            lang_version: &tags.language_version,
31            tracer_version: &tags.tracer_version,
32            lang_interpreter: &tags.language_interpreter,
33            lang_vendor: &tags.language_interpreter_vendor,
34            container_id: &tags.container_id,
35            generic: TracerGenericTags {
36                client_computed_stats: tags.client_computed_stats,
37                client_computed_top_level: tags.client_computed_top_level,
38                ..Default::default()
39            },
40        }
41    }
42}
43
44impl<'a> From<&'a TracerMetadata> for HeaderMap {
45    fn from(tags: &'a TracerMetadata) -> HeaderMap {
46        TracerHeaderTags::from(tags).into()
47    }
48}