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 SequentialSignatureProcessor, SignatureConsumer, SignatureConsumerNoop, SignatureProcessor,
18};
19impl DependenciesBuilder {
20 async fn build_signed_entity_type_lock(&mut self) -> Result<Arc<SignedEntityTypeLock>> {
21 let signed_entity_lock = Arc::new(SignedEntityTypeLock::default());
22 Ok(signed_entity_lock)
23 }
24
25 pub async fn get_signed_entity_type_lock(&mut self) -> Result<Arc<SignedEntityTypeLock>> {
27 get_dependency!(self.signed_entity_type_lock)
28 }
29
30 pub async fn build_message_service(&mut self) -> Result<Arc<dyn MessageService>> {
32 let certificate_repository = Arc::new(CertificateRepository::new(
33 self.get_sqlite_connection().await?,
34 ));
35 let signed_entity_storer = self.get_signed_entity_storer().await?;
36 let immutable_file_digest_mapper = self.get_immutable_file_digest_mapper().await?;
37 let epoch_service = self.get_epoch_service().await?;
38 let service = MithrilMessageService::new(
39 certificate_repository,
40 signed_entity_storer,
41 immutable_file_digest_mapper,
42 epoch_service,
43 );
44
45 Ok(Arc::new(service))
46 }
47
48 pub async fn get_message_service(&mut self) -> Result<Arc<dyn MessageService>> {
50 get_dependency!(self.message_service)
51 }
52
53 pub async fn build_leader_aggregator_client(&mut self) -> Result<Arc<dyn AggregatorClient>> {
55 let leader_aggregator_endpoint = self
56 .configuration
57 .leader_aggregator_endpoint()
58 .unwrap_or_default();
59 let aggregator_client = AggregatorHTTPClient::new(
60 leader_aggregator_endpoint,
61 None,
62 self.get_api_version_provider().await?,
63 Some(Duration::from_secs(30)),
64 self.root_logger(),
65 );
66
67 Ok(Arc::new(aggregator_client))
68 }
69
70 pub async fn get_leader_aggregator_client(&mut self) -> Result<Arc<dyn AggregatorClient>> {
72 get_dependency!(self.leader_aggregator_client)
73 }
74
75 pub async fn build_signature_consumer(&mut self) -> Result<Arc<dyn SignatureConsumer>> {
77 let signature_consumer = SignatureConsumerNoop;
78
79 Ok(Arc::new(signature_consumer))
80 }
81
82 pub async fn create_signature_processor(&mut self) -> Result<Arc<dyn SignatureProcessor>> {
84 let (_stop_tx, stop_rx) = self.get_stop_signal_channel().await?;
85 let signature_processor = SequentialSignatureProcessor::new(
86 self.build_signature_consumer().await?,
87 self.get_certifier_service().await?,
88 stop_rx,
89 self.root_logger(),
90 self.get_metrics_service().await?,
91 );
92
93 Ok(Arc::new(signature_processor))
94 }
95}