use tokio::runtime::Runtime;
use crate::{Error, Result, TelemetryConfig, TelemetryHandle};
pub(crate) fn install_sync_helper(
config: TelemetryConfig,
) -> Result<TelemetrySyncHandle> {
let rt = tokio::runtime::Builder::new_current_thread()
.enable_all()
.build()
.map_err(Error::could_not_install_telemetry)?;
let inner = rt.block_on(config.install())?;
Ok(TelemetrySyncHandle { inner, rt })
}
pub struct TelemetrySyncHandle {
inner: TelemetryHandle,
rt: Runtime,
}
impl TelemetrySyncHandle {
pub fn flush_and_shutdown(self) {
self.rt.block_on(self.inner.flush_and_shutdown());
self.rt.shutdown_background();
}
}