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::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 git_commit_sha: String,
20    pub process_tags: String,
21    pub client_computed_stats: bool,
22    pub client_computed_top_level: bool,
23}
24
25impl<'a> From<&'a TracerMetadata> for TracerHeaderTags<'a> {
26    fn from(tags: &'a TracerMetadata) -> TracerHeaderTags<'a> {
27        TracerHeaderTags::<'_> {
28            lang: &tags.language,
29            lang_version: &tags.language_version,
30            tracer_version: &tags.tracer_version,
31            lang_interpreter: &tags.language_interpreter,
32            lang_vendor: &tags.language_interpreter_vendor,
33            client_computed_stats: tags.client_computed_stats,
34            client_computed_top_level: tags.client_computed_top_level,
35            ..Default::default()
36        }
37    }
38}
39
40impl<'a> From<&'a TracerMetadata> for HeaderMap {
41    fn from(tags: &'a TracerMetadata) -> HeaderMap {
42        TracerHeaderTags::from(tags).into()
43    }
44}