cloud_sdk/diagnostics/
category.rs1use crate::operation::{RequestIdPolicy, RetryEligibility};
2
3#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
5pub enum DiagnosticErrorCategory {
6 Preparation,
8 Authorization,
10 Endpoint,
12 Transport,
14 ResponseTransaction,
16 ResponsePolicy,
18 Decode,
20}
21
22#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
24pub enum DiagnosticRetryCategory {
25 Ineligible,
27 ExplicitPolicy,
29}
30
31impl From<RetryEligibility> for DiagnosticRetryCategory {
32 fn from(value: RetryEligibility) -> Self {
33 match value {
34 RetryEligibility::Never => Self::Ineligible,
35 RetryEligibility::ExplicitPolicy => Self::ExplicitPolicy,
36 }
37 }
38}
39
40#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
42pub enum DiagnosticRequestId {
43 Discarded,
45 Absent,
47 Protected,
49 Retainable,
51}
52
53impl DiagnosticRequestId {
54 pub(crate) const fn classify(policy: RequestIdPolicy, present: bool) -> Self {
55 match (policy, present) {
56 (RequestIdPolicy::Discard, _) => Self::Discarded,
57 (RequestIdPolicy::Protected | RequestIdPolicy::Retain, false) => Self::Absent,
58 (RequestIdPolicy::Protected, true) => Self::Protected,
59 (RequestIdPolicy::Retain, true) => Self::Retainable,
60 }
61 }
62}