mithril_aggregator/dependency_injection/builder/enablers/
misc.rs1use std::sync::Arc;
8use std::time::Duration;
9
10use mithril_signed_entity_lock::SignedEntityTypeLock;
11
12use crate::database::repository::CertificateRepository;
13use crate::dependency_injection::{DependenciesBuilder, Result};
14use crate::get_dependency;
15use crate::services::{
16 AggregatorClient, AggregatorHTTPClient, MessageService, MithrilMessageService,
17};
18impl DependenciesBuilder {
19 async fn build_signed_entity_type_lock(&mut self) -> Result<Arc<SignedEntityTypeLock>> {
20 let signed_entity_lock = Arc::new(SignedEntityTypeLock::default());
21 Ok(signed_entity_lock)
22 }
23
24 pub async fn get_signed_entity_type_lock(&mut self) -> Result<Arc<SignedEntityTypeLock>> {
26 get_dependency!(self.signed_entity_type_lock)
27 }
28
29 pub async fn build_message_service(&mut self) -> Result<Arc<dyn MessageService>> {
31 let certificate_repository = Arc::new(CertificateRepository::new(
32 self.get_sqlite_connection().await?,
33 ));
34 let signed_entity_storer = self.get_signed_entity_storer().await?;
35 let immutable_file_digest_mapper = self.get_immutable_file_digest_mapper().await?;
36 let epoch_service = self.get_epoch_service().await?;
37 let service = MithrilMessageService::new(
38 certificate_repository,
39 signed_entity_storer,
40 immutable_file_digest_mapper,
41 epoch_service,
42 );
43
44 Ok(Arc::new(service))
45 }
46
47 pub async fn get_message_service(&mut self) -> Result<Arc<dyn MessageService>> {
49 get_dependency!(self.message_service)
50 }
51
52 pub async fn build_leader_aggregator_client(&mut self) -> Result<Arc<dyn AggregatorClient>> {
54 let leader_aggregator_endpoint = self
55 .configuration
56 .leader_aggregator_endpoint()
57 .unwrap_or_default();
58 let aggregator_client = AggregatorHTTPClient::new(
59 leader_aggregator_endpoint,
60 None,
61 self.get_api_version_provider().await?,
62 Some(Duration::from_secs(30)),
63 self.root_logger(),
64 );
65
66 Ok(Arc::new(aggregator_client))
67 }
68
69 pub async fn get_leader_aggregator_client(&mut self) -> Result<Arc<dyn AggregatorClient>> {
71 get_dependency!(self.leader_aggregator_client)
72 }
73}