diff options
Diffstat (limited to 'crates/configuration/src/server/grpc_svc.rs')
-rw-r--r-- | crates/configuration/src/server/grpc_svc.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/crates/configuration/src/server/grpc_svc.rs b/crates/configuration/src/server/grpc_svc.rs new file mode 100644 index 0000000..42aa871 --- /dev/null +++ b/crates/configuration/src/server/grpc_svc.rs @@ -0,0 +1,24 @@ +pub mod interceptor { + use opentelemetry::global; + use tonic::{Status, service::Interceptor}; + use tracing::Span; + use tracing_opentelemetry::OpenTelemetrySpanExt; + use warden_stack::tracing::telemetry::tonic::extractor; + + #[derive(Clone, Copy)] + pub struct MyInterceptor; + + impl Interceptor for MyInterceptor { + fn call(&mut self, request: tonic::Request<()>) -> Result<tonic::Request<()>, Status> { + let span = Span::current(); + + let cx = global::get_text_map_propagator(|propagator| { + propagator.extract(&extractor::MetadataMap(request.metadata())) + }); + + span.set_parent(cx); + + Ok(request) + } + } +} |