pub struct CompositeQualityObserver { /* private fields */ }Expand description
Fan-out observer that delegates to multiple backends.
ⓘ
use kmp_observability::quality_observers::*;
let meter = opentelemetry::global::meter("example");
let observer = CompositeQualityObserver::new(vec![
Box::new(OTelQualityObserver::new(&meter)),
Box::new(TracingQualityObserver),
]);Fan-out observer that spawns each adapter on a background task.
Individual adapters run fire-and-forget via tokio::spawn, keeping
the gRPC handler hot path free from observer I/O latency.
Implementations§
Source§impl CompositeQualityObserver
impl CompositeQualityObserver
pub fn new(observers: Vec<Box<dyn QualityMetricsObserver>>) -> Self
Trait Implementations§
Source§impl QualityMetricsObserver for CompositeQualityObserver
impl QualityMetricsObserver for CompositeQualityObserver
Source§fn observe(
&self,
metrics: &BundleQualityMetrics,
context: &QualityObservationContext,
)
fn observe( &self, metrics: &BundleQualityMetrics, context: &QualityObservationContext, )
Record a quality metrics observation.
Auto Trait Implementations§
impl !RefUnwindSafe for CompositeQualityObserver
impl !UnwindSafe for CompositeQualityObserver
impl Freeze for CompositeQualityObserver
impl Send for CompositeQualityObserver
impl Sync for CompositeQualityObserver
impl Unpin for CompositeQualityObserver
impl UnsafeUnpin for CompositeQualityObserver
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request