datadog_api_client/datadogV2/model/
model_observability_pipeline_socket_source_framing.rs

1// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
2// This product includes software developed at Datadog (https://www.datadoghq.com/).
3// Copyright 2019-Present Datadog, Inc.
4use serde::{Deserialize, Deserializer, Serialize};
5
6/// Framing method configuration for the socket source.
7#[non_exhaustive]
8#[derive(Clone, Debug, PartialEq, Serialize)]
9#[serde(untagged)]
10pub enum ObservabilityPipelineSocketSourceFraming {
11    ObservabilityPipelineSocketSourceFramingNewlineDelimited(
12        Box<crate::datadogV2::model::ObservabilityPipelineSocketSourceFramingNewlineDelimited>,
13    ),
14    ObservabilityPipelineSocketSourceFramingBytes(
15        Box<crate::datadogV2::model::ObservabilityPipelineSocketSourceFramingBytes>,
16    ),
17    ObservabilityPipelineSocketSourceFramingCharacterDelimited(
18        Box<crate::datadogV2::model::ObservabilityPipelineSocketSourceFramingCharacterDelimited>,
19    ),
20    ObservabilityPipelineSocketSourceFramingOctetCounting(
21        Box<crate::datadogV2::model::ObservabilityPipelineSocketSourceFramingOctetCounting>,
22    ),
23    ObservabilityPipelineSocketSourceFramingChunkedGelf(
24        Box<crate::datadogV2::model::ObservabilityPipelineSocketSourceFramingChunkedGelf>,
25    ),
26    UnparsedObject(crate::datadog::UnparsedObject),
27}
28
29impl<'de> Deserialize<'de> for ObservabilityPipelineSocketSourceFraming {
30    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
31    where
32        D: Deserializer<'de>,
33    {
34        let value: serde_json::Value = Deserialize::deserialize(deserializer)?;
35        if let Ok(_v) = serde_json::from_value::<
36            Box<crate::datadogV2::model::ObservabilityPipelineSocketSourceFramingNewlineDelimited>,
37        >(value.clone())
38        {
39            if !_v._unparsed {
40                return Ok(ObservabilityPipelineSocketSourceFraming::ObservabilityPipelineSocketSourceFramingNewlineDelimited(_v));
41            }
42        }
43        if let Ok(_v) = serde_json::from_value::<
44            Box<crate::datadogV2::model::ObservabilityPipelineSocketSourceFramingBytes>,
45        >(value.clone())
46        {
47            if !_v._unparsed {
48                return Ok(ObservabilityPipelineSocketSourceFraming::ObservabilityPipelineSocketSourceFramingBytes(_v));
49            }
50        }
51        if let Ok(_v) = serde_json::from_value::<
52            Box<
53                crate::datadogV2::model::ObservabilityPipelineSocketSourceFramingCharacterDelimited,
54            >,
55        >(value.clone())
56        {
57            if !_v._unparsed {
58                return Ok(ObservabilityPipelineSocketSourceFraming::ObservabilityPipelineSocketSourceFramingCharacterDelimited(_v));
59            }
60        }
61        if let Ok(_v) = serde_json::from_value::<
62            Box<crate::datadogV2::model::ObservabilityPipelineSocketSourceFramingOctetCounting>,
63        >(value.clone())
64        {
65            if !_v._unparsed {
66                return Ok(ObservabilityPipelineSocketSourceFraming::ObservabilityPipelineSocketSourceFramingOctetCounting(_v));
67            }
68        }
69        if let Ok(_v) = serde_json::from_value::<
70            Box<crate::datadogV2::model::ObservabilityPipelineSocketSourceFramingChunkedGelf>,
71        >(value.clone())
72        {
73            if !_v._unparsed {
74                return Ok(ObservabilityPipelineSocketSourceFraming::ObservabilityPipelineSocketSourceFramingChunkedGelf(_v));
75            }
76        }
77
78        return Ok(ObservabilityPipelineSocketSourceFraming::UnparsedObject(
79            crate::datadog::UnparsedObject { value },
80        ));
81    }
82}