pub struct CompositeObserver { /* private fields */ }Expand description
Holds a list of inner observers and forwards every event to each. Lets a
consumer combine, e.g., an [crate::OtelObserver] with a custom
Prometheus impl and a logging observer at once.
ⓘ
use std::sync::Arc;
use subms_otel::{CompositeObserver, OtelObserver};
let composite = CompositeObserver::new(vec![
Arc::new(OtelObserver::new(meter)) as Arc<dyn subms::SubMsObserver>,
Arc::new(my_prom_observer),
]);
let h = SubMsPerfHarness::new("workload", "rust").with_observer(Arc::new(composite));Implementations§
Source§impl CompositeObserver
impl CompositeObserver
Sourcepub fn new(inner: Vec<Arc<dyn SubMsObserver>>) -> Self
pub fn new(inner: Vec<Arc<dyn SubMsObserver>>) -> Self
Build from a ready-made vec of observers.
Sourcepub fn with(self, observer: Arc<dyn SubMsObserver>) -> Self
pub fn with(self, observer: Arc<dyn SubMsObserver>) -> Self
Append another observer to the fan-out list. Chainable.
Sourcepub fn observers(&self) -> &[Arc<dyn SubMsObserver>]
pub fn observers(&self) -> &[Arc<dyn SubMsObserver>]
Read the inner observer list. Mostly for tests / introspection.
Trait Implementations§
Source§impl SubMsObserver for CompositeObserver
impl SubMsObserver for CompositeObserver
Source§fn on_record(&self, ctx: &ObservationCtx<'_>, ns: u64)
fn on_record(&self, ctx: &ObservationCtx<'_>, ns: u64)
Called for each recorded sample. Fires from
Stage::record,
Stage::time, Stage::warm_then_time, and PacedStage::time -
anywhere a ns value lands in a stage’s sample buffer.Source§fn on_summarize(&self, summary: &SubMsBenchSummary)
fn on_summarize(&self, summary: &SubMsBenchSummary)
Called once when
crate::summarize is invoked on the harness.
Receives the typed summary including inputs + meta + per-stage stats.Auto Trait Implementations§
impl Freeze for CompositeObserver
impl !RefUnwindSafe for CompositeObserver
impl Send for CompositeObserver
impl Sync for CompositeObserver
impl Unpin for CompositeObserver
impl UnsafeUnpin for CompositeObserver
impl !UnwindSafe for CompositeObserver
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