Skip to content

Commit 75c030f

Browse files
committed
update the state machine
1 parent 4b0ef20 commit 75c030f

File tree

6 files changed

+134
-90
lines changed

6 files changed

+134
-90
lines changed

mithril-signer/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ async fn main() -> Result<(), Box<dyn Error>> {
104104
debug!("Started"; "run_mode" => &args.run_mode, "config" => format!("{config:?}"));
105105

106106
let mut state_machine = StateMachine::new(
107-
SignerState::Unregistered { epoch: None },
107+
SignerState::Init,
108108
Box::new(SignerRunner::new(config.clone(), services)),
109109
Duration::from_millis(config.run_interval),
110110
);

mithril-signer/src/runtime/runner.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ impl Runner for SignerRunner {
443443
.era_reader
444444
.read_era_epoch_token(epoch)
445445
.await
446-
.map_err(|e| Box::new(e))?;
446+
.map_err(Box::new)?;
447447

448448
self.services.era_checker.change_era(
449449
era_token.get_current_supported_era()?,

mithril-signer/src/runtime/signer_services.rs

Lines changed: 26 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
use async_trait::async_trait;
2-
use std::{
3-
error::{Error as StdError, Error},
4-
fs,
5-
sync::Arc,
6-
};
2+
use std::{fs, sync::Arc};
73

84
use mithril_common::digesters::{
95
cache::{ImmutableFileDigestCacheProvider, JsonImmutableFileDigestCacheProviderBuilder},
@@ -32,26 +28,26 @@ type SingleSignerService = Arc<dyn SingleSigner>;
3228
type BeaconProviderService = Arc<dyn BeaconProvider>;
3329
type ProtocolInitializerStoreService = Arc<dyn ProtocolInitializerStorer>;
3430

31+
type Result<T> = std::result::Result<T, Box<dyn std::error::Error>>;
3532
/// The ServiceBuilder is intended to manage Services instance creation.
3633
/// The goal of this is to put all this code out of the way of business code.
3734
#[async_trait]
3835
pub trait ServiceBuilder {
3936
/// Create a SignerService instance.
40-
async fn build(&self) -> Result<SignerServices, Box<dyn StdError>>;
37+
async fn build(&self) -> Result<SignerServices>;
4138
}
4239

4340
/// Create a SignerService instance for Production environment.
4441
pub struct ProductionServiceBuilder<'a> {
4542
config: &'a Config,
46-
chain_observer_builder: fn(&Config) -> Result<ChainObserverService, Box<dyn StdError>>,
47-
immutable_file_observer_builder:
48-
fn(&Config) -> Result<Arc<dyn ImmutableFileObserver>, Box<dyn StdError>>,
43+
chain_observer_builder: fn(&Config) -> Result<ChainObserverService>,
44+
immutable_file_observer_builder: fn(&Config) -> Result<Arc<dyn ImmutableFileObserver>>,
4945
}
5046

5147
impl<'a> ProductionServiceBuilder<'a> {
5248
/// Create a new production service builder.
5349
pub fn new(config: &'a Config) -> Self {
54-
let chain_observer_builder: fn(&Config) -> Result<ChainObserverService, Box<dyn StdError>> =
50+
let chain_observer_builder: fn(&Config) -> Result<ChainObserverService> =
5551
|config: &Config| {
5652
Ok(Arc::new(CardanoCliChainObserver::new(Box::new(
5753
CardanoCliRunner::new(
@@ -61,16 +57,12 @@ impl<'a> ProductionServiceBuilder<'a> {
6157
),
6258
))))
6359
};
64-
let immutable_file_observer_builder: fn(
65-
&Config,
66-
) -> Result<
67-
Arc<dyn ImmutableFileObserver>,
68-
Box<dyn StdError>,
69-
> = |config: &Config| {
70-
Ok(Arc::new(ImmutableFileSystemObserver::new(
71-
&config.db_directory,
72-
)))
73-
};
60+
let immutable_file_observer_builder: fn(&Config) -> Result<Arc<dyn ImmutableFileObserver>> =
61+
|config: &Config| {
62+
Ok(Arc::new(ImmutableFileSystemObserver::new(
63+
&config.db_directory,
64+
)))
65+
};
7466

7567
Self {
7668
config,
@@ -82,7 +74,7 @@ impl<'a> ProductionServiceBuilder<'a> {
8274
/// Override immutable file observer builder.
8375
pub fn override_immutable_file_observer_builder(
8476
&mut self,
85-
builder: fn(&Config) -> Result<Arc<dyn ImmutableFileObserver>, Box<dyn StdError>>,
77+
builder: fn(&Config) -> Result<Arc<dyn ImmutableFileObserver>>,
8678
) -> &mut Self {
8779
self.immutable_file_observer_builder = builder;
8880

@@ -92,15 +84,15 @@ impl<'a> ProductionServiceBuilder<'a> {
9284
/// Override default chain observer builder.
9385
pub fn override_chain_observer_builder(
9486
&mut self,
95-
builder: fn(&Config) -> Result<ChainObserverService, Box<dyn StdError>>,
87+
builder: fn(&Config) -> Result<ChainObserverService>,
9688
) -> &mut Self {
9789
self.chain_observer_builder = builder;
9890

9991
self
10092
}
10193

10294
/// Compute protocol party id
103-
fn compute_protocol_party_id(&self) -> Result<ProtocolPartyId, Box<dyn StdError>> {
95+
fn compute_protocol_party_id(&self) -> Result<ProtocolPartyId> {
10496
match &self.config.operational_certificate_path {
10597
Some(operational_certificate_path) => {
10698
let opcert: OpCert = OpCert::from_file(operational_certificate_path)
@@ -119,7 +111,7 @@ impl<'a> ProductionServiceBuilder<'a> {
119111

120112
async fn build_digester_cache_provider(
121113
&self,
122-
) -> Result<Option<Arc<dyn ImmutableFileDigestCacheProvider>>, Box<dyn Error>> {
114+
) -> Result<Option<Arc<dyn ImmutableFileDigestCacheProvider>>> {
123115
if self.config.disable_digests_cache {
124116
return Ok(None);
125117
}
@@ -139,7 +131,7 @@ impl<'a> ProductionServiceBuilder<'a> {
139131
#[async_trait]
140132
impl<'a> ServiceBuilder for ProductionServiceBuilder<'a> {
141133
/// Build a Services for the Production environment.
142-
async fn build(&self) -> Result<SignerServices, Box<dyn StdError>> {
134+
async fn build(&self) -> Result<SignerServices> {
143135
if !self.config.data_stores_directory.exists() {
144136
fs::create_dir_all(self.config.data_stores_directory.clone())
145137
.map_err(|e| format!("Could not create data stores directory: {e:?}"))?;
@@ -280,20 +272,15 @@ mod tests {
280272
};
281273

282274
assert!(!stores_dir.exists());
283-
let chain_observer_builder: fn(&Config) -> Result<ChainObserverService, Box<dyn StdError>> =
284-
|_config| {
285-
Ok(Arc::new(FakeObserver::new(Some(Beacon {
286-
epoch: Epoch(1),
287-
immutable_file_number: 1,
288-
network: "devnet".to_string(),
289-
}))))
290-
};
291-
let immutable_file_observer_builder: fn(
292-
&Config,
293-
) -> Result<
294-
Arc<dyn ImmutableFileObserver>,
295-
Box<dyn StdError>,
296-
> = |_config: &Config| Ok(Arc::new(DumbImmutableFileObserver::default()));
275+
let chain_observer_builder: fn(&Config) -> Result<ChainObserverService> = |_config| {
276+
Ok(Arc::new(FakeObserver::new(Some(Beacon {
277+
epoch: Epoch(1),
278+
immutable_file_number: 1,
279+
network: "devnet".to_string(),
280+
}))))
281+
};
282+
let immutable_file_observer_builder: fn(&Config) -> Result<Arc<dyn ImmutableFileObserver>> =
283+
|_config: &Config| Ok(Arc::new(DumbImmutableFileObserver::default()));
297284

298285
let mut service_builder = ProductionServiceBuilder::new(&config);
299286
service_builder

0 commit comments

Comments
 (0)