use opentelemetry::trace::SpanKind;
pub(super) use super::AwsSpanBuilder;
mod appconfigdata;
mod dynamodb;
mod firehose;
mod s3;
mod sagemaker_runtime;
mod secretsmanager;
mod sns;
mod sqs;
mod ssm;
pub use appconfigdata::AppConfigDataSpanBuilder;
pub use dynamodb::DynamodbSpanBuilder;
pub use firehose::FirehoseSpanBuilder;
pub use s3::S3SpanBuilder;
pub use sagemaker_runtime::SageMakerRuntimeSpanBuilder;
pub use secretsmanager::SecretsManagerSpanBuilder;
pub use sns::SnsSpanBuilder;
pub use sqs::SqsSpanBuilder;
pub use ssm::SsmSpanBuilder;
pub enum MessagingOperationKind {
Create,
Process,
Receive,
Send,
Settle,
Control,
}
impl MessagingOperationKind {
pub fn as_str(&self) -> &'static str {
match self {
MessagingOperationKind::Create => "create",
MessagingOperationKind::Process => "process",
MessagingOperationKind::Receive => "receive",
MessagingOperationKind::Send => "send",
MessagingOperationKind::Settle => "settle",
MessagingOperationKind::Control => "control",
}
}
}
impl std::fmt::Display for MessagingOperationKind {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl From<MessagingOperationKind> for SpanKind {
#[inline]
fn from(kind: MessagingOperationKind) -> Self {
match kind {
MessagingOperationKind::Create => SpanKind::Producer,
MessagingOperationKind::Process => SpanKind::Consumer,
MessagingOperationKind::Receive => SpanKind::Consumer,
MessagingOperationKind::Settle => SpanKind::Producer,
MessagingOperationKind::Send => SpanKind::Producer,
MessagingOperationKind::Control => SpanKind::Client,
}
}
}
macro_rules! stringify_camel {
($var: ident) => {
paste::paste! { stringify!([<$var:camel>]) }
};
}
pub(super) use stringify_camel;