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