use tokio::sync::mpsc;
use uuid::Uuid;
use crate::session::SessionBus;
use crate::session::SessionEvent;
use crate::session::index_produce::SummaryObservability;
const BUS_CAPACITY: usize = 16;
pub(super) struct DerivationObservability {
bus: Option<SessionBus>,
trace_id: Uuid,
}
impl DerivationObservability {
pub(super) fn new(event_tx: Option<&mpsc::Sender<SessionEvent>>) -> Self {
let bus = event_tx
.cloned()
.map(|tx| SessionBus::new(BUS_CAPACITY).with_legacy_mpsc(tx));
Self {
bus,
trace_id: Uuid::new_v4(),
}
}
pub(super) fn template(&self) -> SummaryObservability {
SummaryObservability {
bus: self.bus.clone(),
trace_id: Some(self.trace_id),
}
}
}