telemetry_rust/middleware/aws/operations/
mod.rs1use opentelemetry::trace::SpanKind;
2
3pub(super) use super::AwsSpanBuilder;
4
5mod appconfigdata;
6mod dynamodb;
7mod firehose;
8mod s3;
9mod sagemaker_runtime;
10mod secretsmanager;
11mod sns;
12mod sqs;
13mod ssm;
14
15pub use appconfigdata::AppConfigDataSpanBuilder;
16pub use dynamodb::DynamodbSpanBuilder;
17pub use firehose::FirehoseSpanBuilder;
18pub use s3::S3SpanBuilder;
19pub use sagemaker_runtime::SageMakerRuntimeSpanBuilder;
20pub use secretsmanager::SecretsManagerSpanBuilder;
21pub use sns::SnsSpanBuilder;
22pub use sqs::SqsSpanBuilder;
23pub use ssm::SsmSpanBuilder;
24
25pub enum MessagingOperationKind {
30 Create,
33 Process,
35 Receive,
38 Send,
42 Settle,
44 Control,
46}
47
48impl MessagingOperationKind {
49 pub fn as_str(&self) -> &'static str {
53 match self {
54 MessagingOperationKind::Create => "create",
55 MessagingOperationKind::Process => "process",
56 MessagingOperationKind::Receive => "receive",
57 MessagingOperationKind::Send => "send",
58 MessagingOperationKind::Settle => "settle",
59 MessagingOperationKind::Control => "control",
60 }
61 }
62}
63
64impl std::fmt::Display for MessagingOperationKind {
65 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
66 self.as_str().fmt(f)
67 }
68}
69
70impl From<MessagingOperationKind> for SpanKind {
71 #[inline]
72 fn from(kind: MessagingOperationKind) -> Self {
73 match kind {
74 MessagingOperationKind::Create => SpanKind::Producer,
75 MessagingOperationKind::Process => SpanKind::Consumer,
76 MessagingOperationKind::Receive => SpanKind::Consumer,
77 MessagingOperationKind::Settle => SpanKind::Producer,
78 MessagingOperationKind::Send => SpanKind::Producer,
79 MessagingOperationKind::Control => SpanKind::Client,
80 }
81 }
82}
83
84macro_rules! stringify_camel {
85 ($var: ident) => {
86 paste::paste! { stringify!([<$var:camel>]) }
87 };
88}
89
90pub(super) use stringify_camel;