mithril_aggregator/dependency_injection/builder/enablers/
ticker.rs1use std::sync::Arc;
2
3use mithril_common::digesters::{
4 DumbImmutableFileObserver, ImmutableFileObserver, ImmutableFileSystemObserver,
5};
6use mithril_common::{MithrilTickerService, TickerService};
7
8use crate::dependency_injection::{DependenciesBuilder, Result};
9use crate::get_dependency;
10use crate::ExecutionEnvironment;
11impl DependenciesBuilder {
12 pub async fn build_ticker_service(&mut self) -> Result<Arc<dyn TickerService>> {
14 let chain_observer = self.get_chain_observer().await?;
15 let immutable_observer = self.get_immutable_file_observer().await?;
16
17 Ok(Arc::new(MithrilTickerService::new(
18 chain_observer,
19 immutable_observer,
20 )))
21 }
22
23 pub async fn get_ticker_service(&mut self) -> Result<Arc<dyn TickerService>> {
25 get_dependency!(self.ticker_service)
26 }
27
28 async fn build_immutable_file_observer(&mut self) -> Result<Arc<dyn ImmutableFileObserver>> {
29 let immutable_file_observer: Arc<dyn ImmutableFileObserver> =
30 match self.configuration.environment() {
31 ExecutionEnvironment::Production => Arc::new(ImmutableFileSystemObserver::new(
32 &self.configuration.db_directory(),
33 )),
34 _ => Arc::new(DumbImmutableFileObserver::default()),
35 };
36
37 Ok(immutable_file_observer)
38 }
39
40 pub async fn get_immutable_file_observer(&mut self) -> Result<Arc<dyn ImmutableFileObserver>> {
42 get_dependency!(self.immutable_file_observer)
43 }
44}