Skip to content

Commit b2704e1

Browse files
authored
Merge pull request #483 from input-output-hk/djo/clean_wrappers
- Remove all Wrapper type that only wrap on one level, usually behind an `Arc` or a `Box` (meaning every wrapper except the one over `MultiSigner`) - Simplify Client dependencies by making most of them mandatory. - Fix some typos in the Client.
2 parents 94a3de4 + a13ef68 commit b2704e1

File tree

10 files changed

+202
-263
lines changed

10 files changed

+202
-263
lines changed

mithril-aggregator/src/configuration.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ use std::sync::Arc;
77

88
use mithril_common::{store::adapter::JsonFileStoreAdapter, CardanoNetwork};
99

10-
use crate::dependency::{SnapshotStoreWrapper, SnapshotUploaderWrapper};
1110
use crate::snapshot_stores::LocalSnapshotStore;
1211
use crate::tools::GcpFileUploader;
13-
use crate::{LocalSnapshotUploader, RemoteSnapshotStore, RemoteSnapshotUploader};
12+
use crate::{
13+
LocalSnapshotUploader, RemoteSnapshotStore, RemoteSnapshotUploader, SnapshotStore,
14+
SnapshotUploader,
15+
};
1416

1517
// TODO: 'LIST_SNAPSHOTS_MAX_ITEMS' keep as const or in config, or add a parameter to `list_snapshots`?
1618
const LIST_SNAPSHOTS_MAX_ITEMS: usize = 20;
@@ -88,7 +90,7 @@ pub enum SnapshotUploaderType {
8890

8991
impl Configuration {
9092
/// Create a snapshot store from the configuration settings.
91-
pub fn build_snapshot_store(&self) -> Result<SnapshotStoreWrapper, Box<dyn Error>> {
93+
pub fn build_snapshot_store(&self) -> Result<Arc<dyn SnapshotStore>, Box<dyn Error>> {
9294
match self.snapshot_store_type {
9395
SnapshotStoreType::Gcp => Ok(Arc::new(RemoteSnapshotStore::new(
9496
Box::new(GcpFileUploader::default()),
@@ -104,7 +106,7 @@ impl Configuration {
104106
}
105107

106108
/// Create a snapshot uploader from configuration settings.
107-
pub fn build_snapshot_uploader(&self) -> SnapshotUploaderWrapper {
109+
pub fn build_snapshot_uploader(&self) -> Arc<dyn SnapshotUploader> {
108110
match self.snapshot_uploader_type {
109111
SnapshotUploaderType::Gcp => Arc::new(RemoteSnapshotUploader::new(Box::new(
110112
GcpFileUploader::default(),

mithril-aggregator/src/dependency.rs

Lines changed: 15 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -20,106 +20,61 @@ use crate::{
2020
SingleSignatureStore, Snapshotter, VerificationKeyStore, VerificationKeyStorer,
2121
};
2222

23-
/// SnapshotStoreWrapper wraps a SnapshotStore
24-
pub type SnapshotStoreWrapper = Arc<dyn SnapshotStore>;
25-
26-
/// SnapshotUploaderWrapper wraps a SnapshotUploader
27-
pub type SnapshotUploaderWrapper = Arc<dyn SnapshotUploader>;
28-
2923
/// MultiSignerWrapper wraps a MultiSigner
3024
pub type MultiSignerWrapper = Arc<RwLock<dyn MultiSigner>>;
3125

32-
/// CertificatePendingStoreWrapper wraps a CertificatePendingStore
33-
pub type CertificatePendingStoreWrapper = Arc<CertificatePendingStore>;
34-
35-
/// CertificateStoreWrapper wraps a CertificateStore
36-
pub type CertificateStoreWrapper = Arc<CertificateStore>;
37-
38-
/// VerificationKeyStoreWrapper wraps a VerificationKeyStore
39-
pub type VerificationKeyStoreWrapper = Arc<VerificationKeyStore>;
40-
41-
/// StakeStoreWrapper wraps a StakeStore
42-
pub type StakeStoreWrapper = Arc<StakeStore>;
43-
44-
/// SingleSignatureStoreWrapper wraps a SingleSignatureStore
45-
pub type SingleSignatureStoreWrapper = Arc<SingleSignatureStore>;
46-
47-
/// ProtocolParametersStoreWrapper wraps ProtocolParameters
48-
pub type ProtocolParametersStoreWrapper = Arc<ProtocolParametersStore>;
49-
50-
/// ChainObserverWrapper wraps a ChainObserver
51-
pub type ChainObserverWrapper = Arc<dyn ChainObserver>;
52-
53-
/// BeaconProviderWrapper wraps a BeaconProvider
54-
pub type BeaconProviderWrapper = Arc<dyn BeaconProvider>;
55-
56-
/// BeaconProviderWrapper wraps a BeaconProvider
57-
pub type ImmutableFileObserverWrapper = Arc<dyn ImmutableFileObserver>;
58-
59-
/// DigesterWrapper wraps a Digester
60-
pub type DigesterWrapper = Arc<dyn ImmutableDigester>;
61-
62-
/// SnapshotterWrapper wraps a Snapshotter
63-
pub type SnapshotterWrapper = Arc<dyn Snapshotter>;
64-
65-
/// CertificateVerifierWrapper wraps a CertificateVerifier
66-
pub type CertificateVerifierWrapper = Arc<dyn CertificateVerifier>;
67-
68-
/// ProtocolGenesisVerifierWrapper wraps a ProtocolGenesisVerifier
69-
pub type ProtocolGenesisVerifierWrapper = Arc<ProtocolGenesisVerifier>;
70-
7126
/// DependencyManager handles the dependencies
7227
pub struct DependencyManager {
7328
/// Configuration structure.
7429
pub config: Configuration,
7530

7631
/// Snapshot store.
77-
pub snapshot_store: SnapshotStoreWrapper,
32+
pub snapshot_store: Arc<dyn SnapshotStore>,
7833

7934
/// Snapshot uploader service.
80-
pub snapshot_uploader: SnapshotUploaderWrapper,
35+
pub snapshot_uploader: Arc<dyn SnapshotUploader>,
8136

8237
/// Multisigner service.
8338
pub multi_signer: MultiSignerWrapper,
8439

8540
/// Certificate pending store.
86-
pub certificate_pending_store: CertificatePendingStoreWrapper,
41+
pub certificate_pending_store: Arc<CertificatePendingStore>,
8742

8843
/// Certificate store.
89-
pub certificate_store: CertificateStoreWrapper,
44+
pub certificate_store: Arc<CertificateStore>,
9045

9146
/// Verification key store.
92-
pub verification_key_store: VerificationKeyStoreWrapper,
47+
pub verification_key_store: Arc<VerificationKeyStore>,
9348

9449
/// Stake store.
95-
pub stake_store: StakeStoreWrapper,
50+
pub stake_store: Arc<StakeStore>,
9651

9752
/// Signer single signature store.
98-
pub single_signature_store: SingleSignatureStoreWrapper,
53+
pub single_signature_store: Arc<SingleSignatureStore>,
9954

10055
/// Protocol parameter store.
101-
pub protocol_parameters_store: ProtocolParametersStoreWrapper,
56+
pub protocol_parameters_store: Arc<ProtocolParametersStore>,
10257

10358
/// Chain observer service.
104-
pub chain_observer: ChainObserverWrapper,
59+
pub chain_observer: Arc<dyn ChainObserver>,
10560

10661
/// Beacon provider service.
107-
pub beacon_provider: BeaconProviderWrapper,
62+
pub beacon_provider: Arc<dyn BeaconProvider>,
10863

10964
/// Immutable file observer service.
110-
pub immutable_file_observer: ImmutableFileObserverWrapper,
65+
pub immutable_file_observer: Arc<dyn ImmutableFileObserver>,
11166

11267
/// Digester service.
113-
pub digester: DigesterWrapper,
68+
pub digester: Arc<dyn ImmutableDigester>,
11469

11570
/// Snapshotter service.
116-
pub snapshotter: SnapshotterWrapper,
71+
pub snapshotter: Arc<dyn Snapshotter>,
11772

11873
/// Certificate verifier service.
119-
pub certificate_verifier: CertificateVerifierWrapper,
74+
pub certificate_verifier: Arc<dyn CertificateVerifier>,
12075

12176
/// Genesis signature verifier service.
122-
pub genesis_verifier: ProtocolGenesisVerifierWrapper,
77+
pub genesis_verifier: Arc<ProtocolGenesisVerifier>,
12378
}
12479

12580
#[doc(hidden)]

mithril-aggregator/src/http_server/routes/certificate_routes.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,16 @@ fn certificate_certificate_hash(
3333
}
3434

3535
mod handlers {
36-
use crate::dependency::{CertificatePendingStoreWrapper, CertificateStoreWrapper};
3736
use crate::http_server::routes::reply;
37+
use crate::{CertificatePendingStore, CertificateStore};
3838
use slog_scope::{debug, warn};
3939
use std::convert::Infallible;
40+
use std::sync::Arc;
4041
use warp::http::StatusCode;
4142

4243
/// Certificate Pending
4344
pub async fn certificate_pending(
44-
certificate_pending_store: CertificatePendingStoreWrapper,
45+
certificate_pending_store: Arc<CertificatePendingStore>,
4546
) -> Result<impl warp::Reply, Infallible> {
4647
debug!("certificate_pending");
4748

@@ -58,7 +59,7 @@ mod handlers {
5859
/// Certificate by certificate hash
5960
pub async fn certificate_certificate_hash(
6061
certificate_hash: String,
61-
certificate_store: CertificateStoreWrapper,
62+
certificate_store: Arc<CertificateStore>,
6263
) -> Result<impl warp::Reply, Infallible> {
6364
debug!("certificate_certificate_hash/{}", certificate_hash);
6465

mithril-aggregator/src/http_server/routes/epoch_routes.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,18 @@ fn epoch_settings(
2323
}
2424

2525
mod handlers {
26-
use crate::dependency::{MultiSignerWrapper, ProtocolParametersStoreWrapper};
26+
use crate::dependency::MultiSignerWrapper;
2727
use crate::http_server::routes::reply;
28-
use crate::ProtocolParametersStorer;
28+
use crate::{ProtocolParametersStore, ProtocolParametersStorer};
2929
use mithril_common::entities::EpochSettings;
3030
use slog_scope::{debug, warn};
3131
use std::convert::Infallible;
32+
use std::sync::Arc;
3233
use warp::http::StatusCode;
3334

3435
/// Epoch Settings
3536
pub async fn epoch_settings(
36-
protocol_parameters_store: ProtocolParametersStoreWrapper,
37+
protocol_parameters_store: Arc<ProtocolParametersStore>,
3738
multi_signer: MultiSignerWrapper,
3839
) -> Result<impl warp::Reply, Infallible> {
3940
debug!("epoch_settings");

mithril-aggregator/src/http_server/routes/middlewares.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,37 @@
1-
use crate::dependency::{
2-
CertificatePendingStoreWrapper, CertificateStoreWrapper, MultiSignerWrapper,
3-
ProtocolParametersStoreWrapper, SnapshotStoreWrapper,
1+
use crate::dependency::MultiSignerWrapper;
2+
use crate::{
3+
CertificatePendingStore, CertificateStore, Configuration, DependencyManager,
4+
ProtocolParametersStore, SnapshotStore,
45
};
5-
use crate::{Configuration, DependencyManager};
66
use std::convert::Infallible;
77
use std::sync::Arc;
88
use warp::Filter;
99

1010
/// With snapshot store middleware
1111
pub fn with_snapshot_store(
1212
dependency_manager: Arc<DependencyManager>,
13-
) -> impl Filter<Extract = (SnapshotStoreWrapper,), Error = Infallible> + Clone {
13+
) -> impl Filter<Extract = (Arc<dyn SnapshotStore>,), Error = Infallible> + Clone {
1414
warp::any().map(move || dependency_manager.snapshot_store.clone())
1515
}
1616

1717
/// With certificate store middleware
1818
pub fn with_certificate_store(
1919
dependency_manager: Arc<DependencyManager>,
20-
) -> impl Filter<Extract = (CertificateStoreWrapper,), Error = Infallible> + Clone {
20+
) -> impl Filter<Extract = (Arc<CertificateStore>,), Error = Infallible> + Clone {
2121
warp::any().map(move || dependency_manager.certificate_store.clone())
2222
}
2323

2424
/// With certificate pending store
2525
pub(crate) fn with_certificate_pending_store(
2626
dependency_manager: Arc<DependencyManager>,
27-
) -> impl Filter<Extract = (CertificatePendingStoreWrapper,), Error = Infallible> + Clone {
27+
) -> impl Filter<Extract = (Arc<CertificatePendingStore>,), Error = Infallible> + Clone {
2828
warp::any().map(move || dependency_manager.certificate_pending_store.clone())
2929
}
3030

3131
/// With protocol parameters store
3232
pub(crate) fn with_protocol_parameters_store(
3333
dependency_manager: Arc<DependencyManager>,
34-
) -> impl Filter<Extract = (ProtocolParametersStoreWrapper,), Error = Infallible> + Clone {
34+
) -> impl Filter<Extract = (Arc<ProtocolParametersStore>,), Error = Infallible> + Clone {
3535
warp::any().map(move || dependency_manager.protocol_parameters_store.clone())
3636
}
3737

mithril-aggregator/src/http_server/routes/snapshot_routes.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,18 +55,18 @@ fn snapshot_digest(
5555
}
5656

5757
mod handlers {
58-
use crate::dependency::SnapshotStoreWrapper;
5958
use crate::http_server::routes::reply;
6059
use crate::http_server::SERVER_BASE_PATH;
61-
use crate::Configuration;
60+
use crate::{Configuration, SnapshotStore};
6261
use slog_scope::{debug, warn};
6362
use std::convert::Infallible;
6463
use std::str::FromStr;
64+
use std::sync::Arc;
6565
use warp::http::{StatusCode, Uri};
6666

6767
/// Snapshots
6868
pub async fn snapshots(
69-
snapshot_store: SnapshotStoreWrapper,
69+
snapshot_store: Arc<dyn SnapshotStore>,
7070
) -> Result<impl warp::Reply, Infallible> {
7171
debug!("snapshots");
7272

@@ -82,7 +82,7 @@ mod handlers {
8282
/// Download a file if and only if it's a snapshot archive
8383
pub async fn ensure_downloaded_file_is_a_snapshot(
8484
reply: warp::fs::File,
85-
snapshot_store: SnapshotStoreWrapper,
85+
snapshot_store: Arc<dyn SnapshotStore>,
8686
) -> Result<impl warp::Reply, Infallible> {
8787
let filepath = reply.path().to_path_buf();
8888
debug!(
@@ -113,7 +113,7 @@ mod handlers {
113113
pub async fn snapshot_download(
114114
digest: String,
115115
config: Configuration,
116-
snapshot_store: SnapshotStoreWrapper,
116+
snapshot_store: Arc<dyn SnapshotStore>,
117117
) -> Result<impl warp::Reply, Infallible> {
118118
debug!("snapshot_download/{}", digest);
119119

@@ -148,7 +148,7 @@ mod handlers {
148148
/// Snapshot by digest
149149
pub async fn snapshot_digest(
150150
digest: String,
151-
snapshot_store: SnapshotStoreWrapper,
151+
snapshot_store: Arc<dyn SnapshotStore>,
152152
) -> Result<impl warp::Reply, Infallible> {
153153
debug!("snapshot_digest/{}", digest);
154154

mithril-aggregator/src/multi_signer.rs

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use std::collections::HashMap;
2+
use std::sync::Arc;
23

34
use async_trait::async_trait;
45
use chrono::prelude::*;
@@ -14,18 +15,16 @@ use mithril_common::crypto_helper::{
1415
PROTOCOL_VERSION,
1516
};
1617
use mithril_common::entities::{self, SignerWithStake};
17-
use mithril_common::store::{StakeStorer, StoreError};
18+
use mithril_common::store::{StakeStore, StakeStorer, StoreError};
1819
use mithril_common::{
1920
NEXT_SIGNER_EPOCH_RETRIEVAL_OFFSET, SIGNER_EPOCH_RECORDING_OFFSET,
2021
SIGNER_EPOCH_RETRIEVAL_OFFSET,
2122
};
2223

23-
use crate::dependency::{
24-
ProtocolParametersStoreWrapper, SingleSignatureStoreWrapper, StakeStoreWrapper,
25-
VerificationKeyStoreWrapper,
26-
};
2724
use crate::store::{SingleSignatureStorer, VerificationKeyStorer};
28-
use crate::ProtocolParametersStorer;
25+
use crate::{
26+
ProtocolParametersStore, ProtocolParametersStorer, SingleSignatureStore, VerificationKeyStore,
27+
};
2928

3029
#[cfg(test)]
3130
use mockall::automock;
@@ -243,25 +242,25 @@ pub struct MultiSignerImpl {
243242
avk: Option<ProtocolAggregateVerificationKey>,
244243

245244
/// Verification key store
246-
verification_key_store: VerificationKeyStoreWrapper,
245+
verification_key_store: Arc<VerificationKeyStore>,
247246

248247
/// Stake store
249-
stake_store: StakeStoreWrapper,
248+
stake_store: Arc<StakeStore>,
250249

251250
/// Single signature store
252-
single_signature_store: SingleSignatureStoreWrapper,
251+
single_signature_store: Arc<SingleSignatureStore>,
253252

254253
/// Protocol parameters store
255-
protocol_parameters_store: ProtocolParametersStoreWrapper,
254+
protocol_parameters_store: Arc<ProtocolParametersStore>,
256255
}
257256

258257
impl MultiSignerImpl {
259258
/// MultiSignerImpl factory
260259
pub fn new(
261-
verification_key_store: VerificationKeyStoreWrapper,
262-
stake_store: StakeStoreWrapper,
263-
single_signature_store: SingleSignatureStoreWrapper,
264-
protocol_parameters_store: ProtocolParametersStoreWrapper,
260+
verification_key_store: Arc<VerificationKeyStore>,
261+
stake_store: Arc<StakeStore>,
262+
single_signature_store: Arc<SingleSignatureStore>,
263+
protocol_parameters_store: Arc<ProtocolParametersStore>,
265264
) -> Self {
266265
debug!("New MultiSignerImpl created");
267266
Self {

mithril-client/src/aggregator.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ pub enum AggregatorHandlerError {
3636
#[error("json parsing failed: '{0}'")]
3737
JsonParseFailed(String),
3838

39-
/// Error raised when an IO error occured (ie: snapshot writting on disk fails).
39+
/// Error raised when an IO error occured (ie: snapshot writing on disk fails).
4040
#[error("io error: {0}")]
4141
IOError(#[from] io::Error),
4242

mithril-client/src/main.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,12 @@ async fn main() -> Result<(), String> {
124124
let genesis_verifier = ProtocolGenesisVerifier::from_verification_key(genesis_verification_key);
125125

126126
// Init runtime
127-
let mut runtime = Runtime::new(config.network.clone());
128-
runtime
129-
.with_aggregator_handler(aggregator_handler)
130-
.with_certificate_verifier(certificate_verifier)
131-
.with_genesis_verifier(genesis_verifier);
127+
let mut runtime = Runtime::new(
128+
config.network.clone(),
129+
aggregator_handler,
130+
certificate_verifier,
131+
genesis_verifier,
132+
);
132133

133134
// Execute commands
134135
match &args.command {

0 commit comments

Comments
 (0)