telemetry_rust/middleware/aws/instrumentation/fluent_builder/
sqs.rs

1/// AWS SQS fluent builder instrumentation implementations
2/// Generated by GitHub Copilot with human guidance
3use super::{utils::*, *};
4use crate::semconv;
5
6// Message operations
7impl<'a> AwsBuilderInstrument<'a> for SendMessageFluentBuilder {
8    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
9        let queue_url = self.get_queue_url().clone().unwrap_or_default();
10        SqsSpanBuilder::send_message(queue_url)
11    }
12}
13impl InstrumentedFluentBuilderOutput for SendMessageOutput {
14    fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
15        attributes![
16            self.message_id()
17                .as_attribute(semconv::MESSAGING_MESSAGE_ID),
18        ]
19    }
20}
21instrument_aws_operation!(aws_sdk_sqs::operation::send_message);
22
23impl<'a> AwsBuilderInstrument<'a> for SendMessageBatchFluentBuilder {
24    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
25        let queue_url = self.get_queue_url().clone().unwrap_or_default();
26        let attributes = attributes![
27            self.get_entries()
28                .as_ref()
29                .map(|entries| entries.len())
30                .as_attribute(semconv::MESSAGING_BATCH_MESSAGE_COUNT)
31        ];
32        SqsSpanBuilder::send_message_batch(queue_url).attributes(attributes)
33    }
34}
35impl InstrumentedFluentBuilderOutput for SendMessageBatchOutput {
36    fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
37        attributes![
38            self.failed()
39                .len()
40                .as_attribute("messaging.batch.message_count.failed"),
41        ]
42    }
43}
44instrument_aws_operation!(aws_sdk_sqs::operation::send_message_batch);
45
46impl<'a> AwsBuilderInstrument<'a> for ReceiveMessageFluentBuilder {
47    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
48        let queue_url = self.get_queue_url().clone().unwrap_or_default();
49        SqsSpanBuilder::receive_message(queue_url)
50    }
51}
52impl InstrumentedFluentBuilderOutput for ReceiveMessageOutput {
53    fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
54        attributes![
55            self.messages()
56                .len()
57                .as_attribute(semconv::MESSAGING_BATCH_MESSAGE_COUNT)
58        ]
59    }
60}
61instrument_aws_operation!(aws_sdk_sqs::operation::receive_message);
62
63impl<'a> AwsBuilderInstrument<'a> for DeleteMessageFluentBuilder {
64    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
65        let queue_url = self.get_queue_url().clone().unwrap_or_default();
66        SqsSpanBuilder::delete_message(queue_url)
67    }
68}
69impl InstrumentedFluentBuilderOutput for DeleteMessageOutput {}
70instrument_aws_operation!(aws_sdk_sqs::operation::delete_message);
71
72impl<'a> AwsBuilderInstrument<'a> for DeleteMessageBatchFluentBuilder {
73    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
74        let queue_url = self.get_queue_url().clone().unwrap_or_default();
75        let attributes = attributes![
76            self.get_entries()
77                .as_ref()
78                .map(|entries| entries.len())
79                .as_attribute(semconv::MESSAGING_BATCH_MESSAGE_COUNT)
80        ];
81        SqsSpanBuilder::delete_message_batch(queue_url).attributes(attributes)
82    }
83}
84impl InstrumentedFluentBuilderOutput for DeleteMessageBatchOutput {}
85instrument_aws_operation!(aws_sdk_sqs::operation::delete_message_batch);
86
87impl<'a> AwsBuilderInstrument<'a> for ChangeMessageVisibilityFluentBuilder {
88    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
89        let queue_url = self.get_queue_url().clone().unwrap_or_default();
90        SqsSpanBuilder::change_message_visibility(queue_url)
91    }
92}
93impl InstrumentedFluentBuilderOutput for ChangeMessageVisibilityOutput {}
94instrument_aws_operation!(aws_sdk_sqs::operation::change_message_visibility);
95
96impl<'a> AwsBuilderInstrument<'a> for ChangeMessageVisibilityBatchFluentBuilder {
97    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
98        let queue_url = self.get_queue_url().clone().unwrap_or_default();
99        let attributes = attributes![
100            self.get_entries()
101                .as_ref()
102                .map(|entries| entries.len())
103                .as_attribute(semconv::MESSAGING_BATCH_MESSAGE_COUNT)
104        ];
105        SqsSpanBuilder::change_message_visibility_batch(queue_url).attributes(attributes)
106    }
107}
108impl InstrumentedFluentBuilderOutput for ChangeMessageVisibilityBatchOutput {}
109instrument_aws_operation!(aws_sdk_sqs::operation::change_message_visibility_batch);
110
111// Queue management operations
112impl<'a> AwsBuilderInstrument<'a> for CreateQueueFluentBuilder {
113    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
114        let queue_name = self.get_queue_name().clone().unwrap_or_default();
115        SqsSpanBuilder::create_queue(queue_name)
116    }
117}
118impl InstrumentedFluentBuilderOutput for CreateQueueOutput {}
119instrument_aws_operation!(aws_sdk_sqs::operation::create_queue);
120
121impl<'a> AwsBuilderInstrument<'a> for DeleteQueueFluentBuilder {
122    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
123        let queue_url = self.get_queue_url().clone().unwrap_or_default();
124        SqsSpanBuilder::delete_queue(queue_url)
125    }
126}
127impl InstrumentedFluentBuilderOutput for DeleteQueueOutput {}
128instrument_aws_operation!(aws_sdk_sqs::operation::delete_queue);
129
130impl<'a> AwsBuilderInstrument<'a> for GetQueueAttributesFluentBuilder {
131    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
132        let queue_url = self.get_queue_url().clone().unwrap_or_default();
133        SqsSpanBuilder::get_queue_attributes(queue_url)
134    }
135}
136impl InstrumentedFluentBuilderOutput for GetQueueAttributesOutput {}
137instrument_aws_operation!(aws_sdk_sqs::operation::get_queue_attributes);
138
139impl<'a> AwsBuilderInstrument<'a> for SetQueueAttributesFluentBuilder {
140    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
141        let queue_url = self.get_queue_url().clone().unwrap_or_default();
142        SqsSpanBuilder::set_queue_attributes(queue_url)
143    }
144}
145impl InstrumentedFluentBuilderOutput for SetQueueAttributesOutput {}
146instrument_aws_operation!(aws_sdk_sqs::operation::set_queue_attributes);
147
148impl<'a> AwsBuilderInstrument<'a> for PurgeQueueFluentBuilder {
149    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
150        let queue_url = self.get_queue_url().clone().unwrap_or_default();
151        SqsSpanBuilder::purge_queue(queue_url)
152    }
153}
154impl InstrumentedFluentBuilderOutput for PurgeQueueOutput {}
155instrument_aws_operation!(aws_sdk_sqs::operation::purge_queue);
156
157impl<'a> AwsBuilderInstrument<'a> for AddPermissionFluentBuilder {
158    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
159        let queue_url = self.get_queue_url().clone().unwrap_or_default();
160        SqsSpanBuilder::add_permission(queue_url)
161    }
162}
163impl InstrumentedFluentBuilderOutput for AddPermissionOutput {}
164instrument_aws_operation!(aws_sdk_sqs::operation::add_permission);
165
166impl<'a> AwsBuilderInstrument<'a> for RemovePermissionFluentBuilder {
167    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
168        let queue_url = self.get_queue_url().clone().unwrap_or_default();
169        SqsSpanBuilder::remove_permission(queue_url)
170    }
171}
172impl InstrumentedFluentBuilderOutput for RemovePermissionOutput {}
173instrument_aws_operation!(aws_sdk_sqs::operation::remove_permission);
174
175// Global operations
176impl<'a> AwsBuilderInstrument<'a> for GetQueueUrlFluentBuilder {
177    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
178        let queue_name = self.get_queue_name().clone().unwrap_or_default();
179        let attributes = attributes![
180            self.get_queue_owner_aws_account_id()
181                .as_attribute(semconv::CLOUD_ACCOUNT_ID)
182        ];
183        SqsSpanBuilder::get_queue_url(queue_name).attributes(attributes)
184    }
185}
186impl InstrumentedFluentBuilderOutput for GetQueueUrlOutput {}
187instrument_aws_operation!(aws_sdk_sqs::operation::get_queue_url);
188
189impl<'a> AwsBuilderInstrument<'a> for ListQueuesFluentBuilder {
190    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
191        SqsSpanBuilder::list_queues()
192    }
193}
194impl InstrumentedFluentBuilderOutput for ListQueuesOutput {}
195instrument_aws_operation!(aws_sdk_sqs::operation::list_queues);
196
197impl<'a> AwsBuilderInstrument<'a> for ListQueueTagsFluentBuilder {
198    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
199        let queue_url = self.get_queue_url().clone().unwrap_or_default();
200        SqsSpanBuilder::list_queue_tags(queue_url)
201    }
202}
203impl InstrumentedFluentBuilderOutput for ListQueueTagsOutput {}
204instrument_aws_operation!(aws_sdk_sqs::operation::list_queue_tags);
205
206impl<'a> AwsBuilderInstrument<'a> for TagQueueFluentBuilder {
207    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
208        let queue_url = self.get_queue_url().clone().unwrap_or_default();
209        SqsSpanBuilder::tag_queue(queue_url)
210    }
211}
212impl InstrumentedFluentBuilderOutput for TagQueueOutput {}
213instrument_aws_operation!(aws_sdk_sqs::operation::tag_queue);
214
215impl<'a> AwsBuilderInstrument<'a> for UntagQueueFluentBuilder {
216    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
217        let queue_url = self.get_queue_url().clone().unwrap_or_default();
218        SqsSpanBuilder::untag_queue(queue_url)
219    }
220}
221impl InstrumentedFluentBuilderOutput for UntagQueueOutput {}
222instrument_aws_operation!(aws_sdk_sqs::operation::untag_queue);
223
224impl<'a> AwsBuilderInstrument<'a> for ListDeadLetterSourceQueuesFluentBuilder {
225    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
226        let queue_url = self.get_queue_url().clone().unwrap_or_default();
227        SqsSpanBuilder::list_dead_letter_source_queues(queue_url)
228    }
229}
230impl InstrumentedFluentBuilderOutput for ListDeadLetterSourceQueuesOutput {}
231instrument_aws_operation!(aws_sdk_sqs::operation::list_dead_letter_source_queues);
232
233impl<'a> AwsBuilderInstrument<'a> for StartMessageMoveTaskFluentBuilder {
234    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
235        SqsSpanBuilder::start_message_move_task()
236    }
237}
238impl InstrumentedFluentBuilderOutput for StartMessageMoveTaskOutput {}
239instrument_aws_operation!(aws_sdk_sqs::operation::start_message_move_task);
240
241impl<'a> AwsBuilderInstrument<'a> for CancelMessageMoveTaskFluentBuilder {
242    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
243        SqsSpanBuilder::cancel_message_move_task()
244    }
245}
246impl InstrumentedFluentBuilderOutput for CancelMessageMoveTaskOutput {}
247instrument_aws_operation!(aws_sdk_sqs::operation::cancel_message_move_task);
248
249impl<'a> AwsBuilderInstrument<'a> for ListMessageMoveTasksFluentBuilder {
250    fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
251        SqsSpanBuilder::list_message_move_tasks()
252    }
253}
254impl InstrumentedFluentBuilderOutput for ListMessageMoveTasksOutput {}
255instrument_aws_operation!(aws_sdk_sqs::operation::list_message_move_tasks);