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