1
1
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 } ;
7
3
8
4
use mithril_common:: digesters:: {
9
5
cache:: { ImmutableFileDigestCacheProvider , JsonImmutableFileDigestCacheProviderBuilder } ,
@@ -32,26 +28,26 @@ type SingleSignerService = Arc<dyn SingleSigner>;
32
28
type BeaconProviderService = Arc < dyn BeaconProvider > ;
33
29
type ProtocolInitializerStoreService = Arc < dyn ProtocolInitializerStorer > ;
34
30
31
+ type Result < T > = std:: result:: Result < T , Box < dyn std:: error:: Error > > ;
35
32
/// The ServiceBuilder is intended to manage Services instance creation.
36
33
/// The goal of this is to put all this code out of the way of business code.
37
34
#[ async_trait]
38
35
pub trait ServiceBuilder {
39
36
/// Create a SignerService instance.
40
- async fn build ( & self ) -> Result < SignerServices , Box < dyn StdError > > ;
37
+ async fn build ( & self ) -> Result < SignerServices > ;
41
38
}
42
39
43
40
/// Create a SignerService instance for Production environment.
44
41
pub struct ProductionServiceBuilder < ' a > {
45
42
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 > > ,
49
45
}
50
46
51
47
impl < ' a > ProductionServiceBuilder < ' a > {
52
48
/// Create a new production service builder.
53
49
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 > =
55
51
|config : & Config | {
56
52
Ok ( Arc :: new ( CardanoCliChainObserver :: new ( Box :: new (
57
53
CardanoCliRunner :: new (
@@ -61,16 +57,12 @@ impl<'a> ProductionServiceBuilder<'a> {
61
57
) ,
62
58
) ) ) )
63
59
} ;
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
+ } ;
74
66
75
67
Self {
76
68
config,
@@ -82,7 +74,7 @@ impl<'a> ProductionServiceBuilder<'a> {
82
74
/// Override immutable file observer builder.
83
75
pub fn override_immutable_file_observer_builder (
84
76
& mut self ,
85
- builder : fn ( & Config ) -> Result < Arc < dyn ImmutableFileObserver > , Box < dyn StdError > > ,
77
+ builder : fn ( & Config ) -> Result < Arc < dyn ImmutableFileObserver > > ,
86
78
) -> & mut Self {
87
79
self . immutable_file_observer_builder = builder;
88
80
@@ -92,15 +84,15 @@ impl<'a> ProductionServiceBuilder<'a> {
92
84
/// Override default chain observer builder.
93
85
pub fn override_chain_observer_builder (
94
86
& mut self ,
95
- builder : fn ( & Config ) -> Result < ChainObserverService , Box < dyn StdError > > ,
87
+ builder : fn ( & Config ) -> Result < ChainObserverService > ,
96
88
) -> & mut Self {
97
89
self . chain_observer_builder = builder;
98
90
99
91
self
100
92
}
101
93
102
94
/// 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 > {
104
96
match & self . config . operational_certificate_path {
105
97
Some ( operational_certificate_path) => {
106
98
let opcert: OpCert = OpCert :: from_file ( operational_certificate_path)
@@ -119,7 +111,7 @@ impl<'a> ProductionServiceBuilder<'a> {
119
111
120
112
async fn build_digester_cache_provider (
121
113
& self ,
122
- ) -> Result < Option < Arc < dyn ImmutableFileDigestCacheProvider > > , Box < dyn Error > > {
114
+ ) -> Result < Option < Arc < dyn ImmutableFileDigestCacheProvider > > > {
123
115
if self . config . disable_digests_cache {
124
116
return Ok ( None ) ;
125
117
}
@@ -139,7 +131,7 @@ impl<'a> ProductionServiceBuilder<'a> {
139
131
#[ async_trait]
140
132
impl < ' a > ServiceBuilder for ProductionServiceBuilder < ' a > {
141
133
/// Build a Services for the Production environment.
142
- async fn build ( & self ) -> Result < SignerServices , Box < dyn StdError > > {
134
+ async fn build ( & self ) -> Result < SignerServices > {
143
135
if !self . config . data_stores_directory . exists ( ) {
144
136
fs:: create_dir_all ( self . config . data_stores_directory . clone ( ) )
145
137
. map_err ( |e| format ! ( "Could not create data stores directory: {e:?}" ) ) ?;
@@ -280,20 +272,15 @@ mod tests {
280
272
} ;
281
273
282
274
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 ( ) ) ) ;
297
284
298
285
let mut service_builder = ProductionServiceBuilder :: new ( & config) ;
299
286
service_builder
0 commit comments