mod layer;
pub use crate::{
api::TimelineId,
tracing::{ingest::ModalityIngestThreadHandle, timeline_id, InitError, Options},
};
pub use layer::ModalityLayer;
use anyhow::Context as _;
use tracing::Dispatch;
pub struct TracingModality {
ingest_handle: ModalityIngestThreadHandle,
}
impl TracingModality {
pub fn init() -> Result<Self, InitError> {
Self::init_with_options(Default::default())
}
pub fn init_with_options(opts: Options) -> Result<Self, InitError> {
let (layer, ingest_handle) =
ModalityLayer::init_with_options(opts).context("initialize ModalityLayer")?;
let disp = Dispatch::new(layer.into_subscriber());
tracing::dispatcher::set_global_default(disp).unwrap();
Ok(Self { ingest_handle })
}
pub fn finish(self) {
self.ingest_handle.finish();
}
}