Skip to main content

libdd_telemetry/data/
common.rs

1// Copyright 2021-Present Datadog, Inc. https://www.datadoghq.com/
2// SPDX-License-Identifier: Apache-2.0
3
4use serde::{Deserialize, Serialize};
5
6use crate::data::*;
7
8#[derive(Serialize, Deserialize, Debug)]
9pub enum ApiVersion {
10    #[serde(rename = "v2")]
11    V2,
12}
13
14impl ApiVersion {
15    pub fn to_str(&self) -> &'static str {
16        match self {
17            ApiVersion::V2 => "v2",
18        }
19    }
20}
21
22#[derive(Serialize, Debug)]
23pub struct Telemetry<'a> {
24    pub api_version: ApiVersion,
25    pub tracer_time: u64,
26    pub runtime_id: &'a str,
27    pub seq_id: u64,
28    pub application: &'a Application,
29    pub host: &'a Host,
30    #[serde(default, skip_serializing_if = "Option::is_none")]
31    pub origin: Option<&'a str>,
32    #[serde(flatten)]
33    pub payload: &'a Payload,
34}
35
36#[derive(Serialize, Deserialize, Default, Debug)]
37pub struct Application {
38    pub service_name: String,
39    #[serde(skip_serializing_if = "Option::is_none")]
40    pub service_version: Option<String>,
41    #[serde(skip_serializing_if = "Option::is_none")]
42    pub env: Option<String>,
43    pub language_name: String,
44    pub language_version: String,
45    pub tracer_version: String,
46    #[serde(skip_serializing_if = "Option::is_none")]
47    pub runtime_name: Option<String>,
48    #[serde(skip_serializing_if = "Option::is_none")]
49    pub runtime_version: Option<String>,
50    #[serde(skip_serializing_if = "Option::is_none")]
51    pub runtime_patches: Option<String>,
52    #[serde(skip_serializing_if = "Option::is_none")]
53    pub process_tags: Option<String>,
54}
55
56#[derive(Serialize, Deserialize, Default, Debug)]
57pub struct Host {
58    pub hostname: String,
59    #[serde(skip_serializing_if = "Option::is_none")]
60    pub container_id: Option<String>,
61    #[serde(skip_serializing_if = "Option::is_none")]
62    pub os: Option<String>,
63    #[serde(skip_serializing_if = "Option::is_none")]
64    pub os_version: Option<String>,
65    #[serde(skip_serializing_if = "Option::is_none")]
66    pub kernel_name: Option<String>,
67    #[serde(skip_serializing_if = "Option::is_none")]
68    pub kernel_release: Option<String>,
69    #[serde(skip_serializing_if = "Option::is_none")]
70    pub kernel_version: Option<String>,
71}