libdd_telemetry/data/
payload.rs

1// Copyright 2021-Present Datadog, Inc. https://www.datadoghq.com/
2// SPDX-License-Identifier: Apache-2.0
3
4use crate::data::*;
5use serde::Serialize;
6
7#[derive(Serialize, Debug)]
8#[serde(tag = "request_type", content = "payload")]
9#[serde(rename_all = "kebab-case")]
10pub enum Payload {
11    AppStarted(AppStarted),
12    AppDependenciesLoaded(AppDependenciesLoaded),
13    AppIntegrationsChange(AppIntegrationsChange),
14    AppClientConfigurationChange(AppClientConfigurationChange),
15    AppHeartbeat(#[serde(skip_serializing)] ()),
16    AppClosing(#[serde(skip_serializing)] ()),
17    GenerateMetrics(GenerateMetrics),
18    Sketches(Distributions),
19    Logs(Vec<Log>),
20    MessageBatch(Vec<Payload>),
21    AppExtendedHeartbeat(AppStarted),
22}
23
24impl Payload {
25    pub fn request_type(&self) -> &'static str {
26        use Payload::*;
27        match self {
28            AppStarted(_) => "app-started",
29            AppDependenciesLoaded(_) => "app-dependencies-loaded",
30            AppIntegrationsChange(_) => "app-integrations-change",
31            AppClientConfigurationChange(_) => "app-client-configuration-change",
32            AppHeartbeat(_) => "app-heartbeat",
33            AppClosing(_) => "app-closing",
34            GenerateMetrics(_) => "generate-metrics",
35            Sketches(_) => "sketches",
36            Logs(_) => "logs",
37            MessageBatch(_) => "message-batch",
38            AppExtendedHeartbeat(_) => "app-extended-heartbeat",
39        }
40    }
41}