Skip to content

Commit e87922e

Browse files
committed
Wire SignerRecorder dependency
1 parent 10cacbf commit e87922e

File tree

4 files changed

+34
-19
lines changed

4 files changed

+34
-19
lines changed

mithril-aggregator/src/database/provider/signer.rs

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ use mithril_common::sqlite::{
1111
use mithril_common::StdError;
1212
use tokio::sync::Mutex;
1313

14+
use crate::signer_registerer::SignerRecorder;
15+
1416
/// Signer record is the representation of a stored signer.
1517
#[derive(Debug, PartialEq, Clone)]
1618
pub struct SignerRecord {
@@ -218,20 +220,6 @@ impl<'conn> Provider<'conn> for UpdateSignerRecordProvider<'conn> {
218220
}
219221
}
220222

221-
/// Signer recorder trait
222-
#[async_trait]
223-
pub trait SignerRecorder {
224-
/// Record signer_id
225-
async fn record_signer_id(&self, signer_id: String) -> Result<(), StdError>;
226-
227-
/// Record pool ticker by id
228-
async fn record_signer_pool_ticker(
229-
&self,
230-
signer_id: String,
231-
pool_ticker: Option<String>,
232-
) -> Result<(), StdError>;
233-
}
234-
235223
/// Service to deal with signer (read & write).
236224
pub struct SignerStore {
237225
connection: Arc<Mutex<Connection>>,

mithril-aggregator/src/dependency.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ use std::{collections::HashMap, sync::Arc};
1515
use tokio::sync::{Mutex, RwLock};
1616

1717
use crate::{
18-
configuration::*, database::provider::StakePoolStore, CertificatePendingStore,
19-
CertificateStore, ProtocolParametersStore, ProtocolParametersStorer, SignerRegisterer,
20-
SignerRegistrationRoundOpener, SingleSignatureStore, Snapshotter, VerificationKeyStore,
21-
VerificationKeyStorer,
18+
configuration::*, database::provider::StakePoolStore, signer_registerer::SignerRecorder,
19+
CertificatePendingStore, CertificateStore, ProtocolParametersStore, ProtocolParametersStorer,
20+
SignerRegisterer, SignerRegistrationRoundOpener, SingleSignatureStore, Snapshotter,
21+
VerificationKeyStore, VerificationKeyStorer,
2222
};
2323
use crate::{event_store::EventMessage, snapshot_stores::SnapshotStore};
2424
use crate::{event_store::TransmitterService, multi_signer::MultiSigner};
@@ -108,6 +108,9 @@ pub struct DependencyManager {
108108

109109
/// Stake Distribution Service
110110
pub stake_distribution_service: Arc<dyn StakeDistributionService>,
111+
112+
/// Signer Recorder
113+
pub signer_recorder: Arc<dyn SignerRecorder>,
111114
}
112115

113116
#[doc(hidden)]

mithril-aggregator/src/dependency_injection/builder.rs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,11 @@ use crate::{
3838
configuration::{ExecutionEnvironment, LIST_SNAPSHOTS_MAX_ITEMS},
3939
database::provider::{
4040
CertificateStoreAdapter, EpochSettingStore, SignedEntityStoreAdapter,
41-
SignerRegistrationStoreAdapter, StakePoolStore,
41+
SignerRegistrationStoreAdapter, SignerStore, StakePoolStore,
4242
},
4343
event_store::{EventMessage, EventStore, TransmitterService},
4444
http_server::routes::router,
45+
signer_registerer::SignerRecorder,
4546
stake_distribution_service::{MithrilStakeDistributionService, StakeDistributionService},
4647
ticker_service::{MithrilTickerService, TickerService},
4748
tools::{GcpFileUploader, GenesisToolsDependency},
@@ -152,6 +153,9 @@ pub struct DependenciesBuilder {
152153

153154
/// Ticker Service (TODO: remove BeaconProvider)
154155
pub ticker_service: Option<Arc<dyn TickerService>>,
156+
157+
/// Signer Recorder
158+
pub signer_recorder: Option<Arc<dyn SignerRecorder>>,
155159
}
156160

157161
impl DependenciesBuilder {
@@ -188,6 +192,7 @@ impl DependenciesBuilder {
188192
api_version_provider: None,
189193
stake_distribution_service: None,
190194
ticker_service: None,
195+
signer_recorder: None,
191196
}
192197
}
193198

@@ -763,6 +768,7 @@ impl DependenciesBuilder {
763768
let registerer = MithrilSignerRegisterer::new(
764769
self.get_chain_observer().await?,
765770
self.get_verification_key_store().await?,
771+
self.get_signer_recorder().await?,
766772
);
767773

768774
Ok(Arc::new(registerer))
@@ -946,6 +952,21 @@ impl DependenciesBuilder {
946952
Ok(self.stake_distribution_service.as_ref().cloned().unwrap())
947953
}
948954

955+
async fn build_signer_recorder(&mut self) -> Result<Arc<dyn SignerRecorder>> {
956+
let signer_recorder = Arc::new(SignerStore::new(self.get_sqlite_connection().await?));
957+
958+
Ok(signer_recorder)
959+
}
960+
961+
/// [SignerRecorder]
962+
pub async fn get_signer_recorder(&mut self) -> Result<Arc<dyn SignerRecorder>> {
963+
if self.signer_recorder.is_none() {
964+
self.signer_recorder = Some(self.build_signer_recorder().await?);
965+
}
966+
967+
Ok(self.signer_recorder.as_ref().cloned().unwrap())
968+
}
969+
949970
/// Return an unconfigured [DependencyManager]
950971
pub async fn build_dependency_container(&mut self) -> Result<DependencyManager> {
951972
let dependency_manager = DependencyManager {
@@ -974,6 +995,7 @@ impl DependenciesBuilder {
974995
event_transmitter: self.get_event_transmitter().await?,
975996
api_version_provider: self.get_api_version_provider().await?,
976997
stake_distribution_service: self.get_stake_distribution_service().await?,
998+
signer_recorder: self.get_signer_recorder().await?,
977999
};
9781000

9791001
Ok(dependency_manager)

mithril-aggregator/src/runtime/runner.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -859,6 +859,7 @@ pub mod tests {
859859
let signer_registration_round_opener = Arc::new(MithrilSignerRegisterer::new(
860860
deps.chain_observer.clone(),
861861
deps.verification_key_store.clone(),
862+
deps.signer_recorder.clone(),
862863
));
863864
deps.signer_registration_round_opener = signer_registration_round_opener.clone();
864865
let stake_store = deps.stake_store.clone();
@@ -897,6 +898,7 @@ pub mod tests {
897898
let signer_registration_round_opener = Arc::new(MithrilSignerRegisterer::new(
898899
deps.chain_observer.clone(),
899900
deps.verification_key_store.clone(),
901+
deps.signer_recorder.clone(),
900902
));
901903
deps.signer_registration_round_opener = signer_registration_round_opener.clone();
902904
let deps = Arc::new(deps);

0 commit comments

Comments
 (0)