#![cfg_attr(docsrs, feature(doc_cfg))]
use std::sync::Arc;
use tracing::error;
use elfo_core::Blueprint;
use self::{recorder::Recorder, storage::Storage};
pub mod config;
pub mod protocol;
mod actor;
mod hyper;
mod metrics;
mod recorder;
mod render;
mod stats;
mod storage;
#[cfg(feature = "unstable")]
mod allocator;
#[cfg(feature = "unstable")]
pub use allocator::AllocatorStats;
pub fn init() -> Blueprint {
let storage = Arc::new(Storage::default());
let recorder = Recorder::new(storage.clone());
let blueprint = actor::new(storage);
match ::metrics::set_boxed_recorder(Box::new(recorder)) {
Ok(_) => stats::register(),
Err(err) => error!(error = %err, "failed to set a metric recorder"),
}
blueprint
}