Skip to content

Commit e00ca1e

Browse files
committed
refactor: introduce SignableBuilderServiceDependencies to simplify MithrilSignableBuilderService constructor
It reduces the number of parameters in the constructor by encapsulating dependencies into a single struct.
1 parent d2e12f4 commit e00ca1e

File tree

5 files changed

+66
-26
lines changed

5 files changed

+66
-26
lines changed

mithril-aggregator/src/dependency_injection/builder.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ use mithril_common::{
3737
signable_builder::{
3838
CardanoImmutableFilesFullSignableBuilder, CardanoStakeDistributionSignableBuilder,
3939
CardanoTransactionsSignableBuilder, MithrilSignableBuilderService,
40-
MithrilStakeDistributionSignableBuilder, SignableBuilderService, SignableSeedBuilder,
41-
TransactionsImporter,
40+
MithrilStakeDistributionSignableBuilder, SignableBuilderService,
41+
SignableBuilderServiceDependencies, SignableSeedBuilder, TransactionsImporter,
4242
},
4343
signed_entity_type_lock::SignedEntityTypeLock,
4444
MithrilTickerService, TickerService,
@@ -1129,13 +1129,16 @@ impl DependenciesBuilder {
11291129
CardanoStakeDistributionSignableBuilder::new(self.get_stake_store().await?),
11301130
);
11311131
let era_checker = self.get_era_checker().await?;
1132-
let signable_builder_service = Arc::new(MithrilSignableBuilderService::new(
1133-
era_checker,
1134-
seed_signable_builder,
1132+
let signable_builders_dependencies = SignableBuilderServiceDependencies::new(
11351133
mithril_stake_distribution_builder,
11361134
immutable_signable_builder,
11371135
cardano_transactions_builder,
11381136
cardano_stake_distribution_builder,
1137+
);
1138+
let signable_builder_service = Arc::new(MithrilSignableBuilderService::new(
1139+
era_checker,
1140+
seed_signable_builder,
1141+
signable_builders_dependencies,
11391142
self.root_logger(),
11401143
));
11411144

mithril-common/src/signable_builder/signable_builder_service.rs

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,24 +36,47 @@ pub struct MithrilSignableBuilderService {
3636
logger: Logger,
3737
}
3838

39-
impl MithrilSignableBuilderService {
40-
/// MithrilSignableBuilderService factory
39+
/// SignableBuilders dependencies required by the [MithrilSignableBuilderService].
40+
pub struct SignableBuilderServiceDependencies {
41+
mithril_stake_distribution_builder: Arc<dyn SignableBuilder<Epoch>>,
42+
immutable_signable_builder: Arc<dyn SignableBuilder<CardanoDbBeacon>>,
43+
cardano_transactions_signable_builder: Arc<dyn SignableBuilder<BlockNumber>>,
44+
cardano_stake_distribution_builder: Arc<dyn SignableBuilder<Epoch>>,
45+
}
46+
47+
impl SignableBuilderServiceDependencies {
48+
/// Create a new instance of [SignableBuilderServiceDependencies].
4149
pub fn new(
42-
era_checker: Arc<EraChecker>,
43-
seed_signable_builder: Arc<dyn SignableSeedBuilder>,
4450
mithril_stake_distribution_builder: Arc<dyn SignableBuilder<Epoch>>,
4551
immutable_signable_builder: Arc<dyn SignableBuilder<CardanoDbBeacon>>,
4652
cardano_transactions_signable_builder: Arc<dyn SignableBuilder<BlockNumber>>,
4753
cardano_stake_distribution_builder: Arc<dyn SignableBuilder<Epoch>>,
48-
logger: Logger,
4954
) -> Self {
5055
Self {
51-
era_checker,
52-
seed_signable_builder,
5356
mithril_stake_distribution_builder,
5457
immutable_signable_builder,
5558
cardano_transactions_signable_builder,
5659
cardano_stake_distribution_builder,
60+
}
61+
}
62+
}
63+
64+
impl MithrilSignableBuilderService {
65+
/// MithrilSignableBuilderService factory
66+
pub fn new(
67+
era_checker: Arc<EraChecker>,
68+
seed_signable_builder: Arc<dyn SignableSeedBuilder>,
69+
dependencies: SignableBuilderServiceDependencies,
70+
logger: Logger,
71+
) -> Self {
72+
Self {
73+
era_checker,
74+
seed_signable_builder,
75+
mithril_stake_distribution_builder: dependencies.mithril_stake_distribution_builder,
76+
immutable_signable_builder: dependencies.immutable_signable_builder,
77+
cardano_transactions_signable_builder: dependencies
78+
.cardano_transactions_signable_builder,
79+
cardano_stake_distribution_builder: dependencies.cardano_stake_distribution_builder,
5780
logger: logger.new_with_component_name::<Self>(),
5881
}
5982
}
@@ -200,13 +223,17 @@ mod tests {
200223
}
201224

202225
fn build_signable_builder_service(self) -> MithrilSignableBuilderService {
203-
MithrilSignableBuilderService::new(
204-
Arc::new(self.era_checker),
205-
Arc::new(self.mock_signable_seed_builder),
226+
let dependencies = SignableBuilderServiceDependencies::new(
206227
Arc::new(self.mock_mithril_stake_distribution_signable_builder),
207228
Arc::new(self.mock_cardano_immutable_files_full_signable_builder),
208229
Arc::new(self.mock_cardano_transactions_signable_builder),
209230
Arc::new(self.mock_cardano_stake_distribution_signable_builder),
231+
);
232+
233+
MithrilSignableBuilderService::new(
234+
Arc::new(self.era_checker),
235+
Arc::new(self.mock_signable_seed_builder),
236+
dependencies,
210237
TestLogger::stdout(),
211238
)
212239
}

mithril-signer/src/dependency_injection/builder.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use mithril_common::era::{EraChecker, EraReader};
2424
use mithril_common::signable_builder::{
2525
CardanoImmutableFilesFullSignableBuilder, CardanoStakeDistributionSignableBuilder,
2626
CardanoTransactionsSignableBuilder, MithrilSignableBuilderService,
27-
MithrilStakeDistributionSignableBuilder,
27+
MithrilStakeDistributionSignableBuilder, SignableBuilderServiceDependencies,
2828
};
2929
use mithril_common::signed_entity_type_lock::SignedEntityTypeLock;
3030
use mithril_common::{MithrilTickerService, StdResult, TickerService};
@@ -342,13 +342,16 @@ impl<'a> DependenciesBuilder<'a> {
342342
epoch_service.clone(),
343343
protocol_initializer_store.clone(),
344344
));
345-
let signable_builder_service = Arc::new(MithrilSignableBuilderService::new(
346-
era_checker.clone(),
347-
signable_seed_builder_service,
345+
let signable_builders_dependencies = SignableBuilderServiceDependencies::new(
348346
mithril_stake_distribution_signable_builder,
349347
cardano_immutable_snapshot_builder,
350348
cardano_transactions_builder,
351349
cardano_stake_distribution_signable_builder,
350+
);
351+
let signable_builder_service = Arc::new(MithrilSignableBuilderService::new(
352+
era_checker.clone(),
353+
signable_seed_builder_service,
354+
signable_builders_dependencies,
352355
self.root_logger(),
353356
));
354357
let metrics_service = Arc::new(MetricsService::new(self.root_logger())?);

mithril-signer/src/runtime/runner.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,7 @@ impl Runner for SignerRunner {
327327

328328
#[cfg(test)]
329329
mod tests {
330+
use mithril_common::signable_builder::SignableBuilderServiceDependencies;
330331
use mockall::mock;
331332
use mockall::predicate::eq;
332333
use std::collections::BTreeSet;
@@ -464,13 +465,16 @@ mod tests {
464465
epoch_service.clone(),
465466
protocol_initializer_store.clone(),
466467
));
467-
let signable_builder_service = Arc::new(MithrilSignableBuilderService::new(
468-
era_checker.clone(),
469-
signable_seed_builder_service,
468+
let signable_builders_dependencies = SignableBuilderServiceDependencies::new(
470469
mithril_stake_distribution_signable_builder,
471470
cardano_immutable_signable_builder,
472471
cardano_transactions_builder,
473472
cardano_stake_distribution_builder,
473+
);
474+
let signable_builder_service = Arc::new(MithrilSignableBuilderService::new(
475+
era_checker.clone(),
476+
signable_seed_builder_service,
477+
signable_builders_dependencies,
474478
logger.clone(),
475479
));
476480
let metrics_service = Arc::new(MetricsService::new(logger.clone()).unwrap());

mithril-signer/tests/test_extensions/state_machine_tester.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ use mithril_common::{
3030
signable_builder::{
3131
CardanoImmutableFilesFullSignableBuilder, CardanoStakeDistributionSignableBuilder,
3232
CardanoTransactionsSignableBuilder, MithrilSignableBuilderService,
33-
MithrilStakeDistributionSignableBuilder,
33+
MithrilStakeDistributionSignableBuilder, SignableBuilderServiceDependencies,
3434
},
3535
signed_entity_type_lock::SignedEntityTypeLock,
3636
MithrilTickerService, StdError, TickerService,
@@ -225,13 +225,16 @@ impl StateMachineTester {
225225
epoch_service.clone(),
226226
protocol_initializer_store.clone(),
227227
));
228-
let signable_builder_service = Arc::new(MithrilSignableBuilderService::new(
229-
era_checker.clone(),
230-
signable_seed_builder_service,
228+
let signable_builders_dependencies = SignableBuilderServiceDependencies::new(
231229
mithril_stake_distribution_signable_builder,
232230
cardano_immutable_snapshot_builder,
233231
cardano_transactions_builder,
234232
cardano_stake_distribution_builder,
233+
);
234+
let signable_builder_service = Arc::new(MithrilSignableBuilderService::new(
235+
era_checker.clone(),
236+
signable_seed_builder_service,
237+
signable_builders_dependencies,
235238
logger.clone(),
236239
));
237240
let metrics_service = Arc::new(MetricsService::new(logger.clone()).unwrap());

0 commit comments

Comments
 (0)