telemetry_rust/middleware/aws/operations/
mod.rs1use opentelemetry::trace::SpanKind;
2
3pub(super) use super::AwsSpanBuilder;
4
5mod dynamodb;
6mod firehose;
7mod sagemaker_runtime;
8mod sns;
9mod sqs;
10
11pub use dynamodb::DynamodbSpanBuilder;
12pub use firehose::FirehoseSpanBuilder;
13pub use sagemaker_runtime::SageMakerRuntimeSpanBuilder;
14pub use sns::SnsSpanBuilder;
15pub use sqs::SqsSpanBuilder;
16
17pub enum MessagingOperationKind {
22 Create,
25 Process,
27 Receive,
30 Send,
34 Settle,
36 Control,
38}
39
40impl MessagingOperationKind {
41 pub fn as_str(&self) -> &'static str {
45 match self {
46 MessagingOperationKind::Create => "create",
47 MessagingOperationKind::Process => "process",
48 MessagingOperationKind::Receive => "receive",
49 MessagingOperationKind::Send => "send",
50 MessagingOperationKind::Settle => "settle",
51 MessagingOperationKind::Control => "control",
52 }
53 }
54}
55
56impl std::fmt::Display for MessagingOperationKind {
57 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
58 self.as_str().fmt(f)
59 }
60}
61
62impl From<MessagingOperationKind> for SpanKind {
63 #[inline]
64 fn from(kind: MessagingOperationKind) -> Self {
65 match kind {
66 MessagingOperationKind::Create => SpanKind::Producer,
67 MessagingOperationKind::Process => SpanKind::Consumer,
68 MessagingOperationKind::Receive => SpanKind::Consumer,
69 MessagingOperationKind::Settle => SpanKind::Producer,
70 MessagingOperationKind::Send => SpanKind::Producer,
71 MessagingOperationKind::Control => SpanKind::Client,
72 }
73 }
74}
75
76macro_rules! stringify_camel {
77 ($var: ident) => {
78 paste::paste! { stringify!([<$var:camel>]) }
79 };
80}
81
82pub(super) use stringify_camel;