@@ -8,6 +8,18 @@ use std::path::{Path, PathBuf};
8
8
use std:: time:: Duration ;
9
9
use tokio:: process:: Child ;
10
10
11
+ #[ derive( Debug ) ]
12
+ pub struct AggregatorConfig < ' a > {
13
+ pub server_port : u64 ,
14
+ pub bft_node : & ' a BftNode ,
15
+ pub cardano_cli_path : & ' a Path ,
16
+ pub work_dir : & ' a Path ,
17
+ pub bin_dir : & ' a Path ,
18
+ pub mithril_era : & ' a str ,
19
+ pub signed_entity_types : & ' a [ String ] ,
20
+ pub chain_observer_type : & ' a str ,
21
+ }
22
+
11
23
#[ derive( Debug ) ]
12
24
pub struct Aggregator {
13
25
server_port : u64 ,
@@ -17,20 +29,14 @@ pub struct Aggregator {
17
29
}
18
30
19
31
impl Aggregator {
20
- pub fn new (
21
- server_port : u64 ,
22
- bft_node : & BftNode ,
23
- cardano_cli_path : & Path ,
24
- work_dir : & Path ,
25
- bin_dir : & Path ,
26
- mithril_era : & str ,
27
- signed_entity_types : & [ String ] ,
28
- ) -> StdResult < Self > {
32
+ pub fn new ( aggregator_config : & AggregatorConfig ) -> StdResult < Self > {
29
33
let magic_id = DEVNET_MAGIC_ID . to_string ( ) ;
30
- let server_port_parameter = server_port. to_string ( ) ;
31
- let era_reader_adapter_params =
32
- format ! ( r#"{{"markers": [{{"name": "{mithril_era}", "epoch": 1}}]}}"# ) ;
33
- let signed_entity_types = signed_entity_types. join ( "," ) ;
34
+ let server_port_parameter = aggregator_config. server_port . to_string ( ) ;
35
+ let era_reader_adapter_params = format ! (
36
+ r#"{{"markers": [{{"name": "{}", "epoch": 1}}]}}"# ,
37
+ aggregator_config. mithril_era
38
+ ) ;
39
+ let signed_entity_types = aggregator_config. signed_entity_types . join ( "," ) ;
34
40
let env = HashMap :: from ( [
35
41
( "NETWORK" , "devnet" ) ,
36
42
( "RUN_INTERVAL" , "400" ) ,
@@ -43,25 +49,35 @@ impl Aggregator {
43
49
( "DATA_STORES_DIRECTORY" , "./stores/aggregator" ) ,
44
50
(
45
51
"CARDANO_NODE_SOCKET_PATH" ,
46
- bft_node. socket_path . to_str ( ) . unwrap ( ) ,
52
+ aggregator_config . bft_node . socket_path . to_str ( ) . unwrap ( ) ,
47
53
) ,
48
54
( "STORE_RETENTION_LIMIT" , "10" ) ,
49
- ( "CARDANO_CLI_PATH" , cardano_cli_path. to_str ( ) . unwrap ( ) ) ,
55
+ ( "CARDANO_CLI_PATH" , aggregator_config . cardano_cli_path . to_str ( ) . unwrap ( ) ) ,
50
56
( "GENESIS_VERIFICATION_KEY" , "5b33322c3235332c3138362c3230312c3137372c31312c3131372c3133352c3138372c3136372c3138312c3138382c32322c35392c3230362c3130352c3233312c3135302c3231352c33302c37382c3231322c37362c31362c3235322c3138302c37322c3133342c3133372c3234372c3136312c36385d" ) ,
51
57
( "GENESIS_SECRET_KEY" , "5b3131382c3138342c3232342c3137332c3136302c3234312c36312c3134342c36342c39332c3130362c3232392c38332c3133342c3138392c34302c3138392c3231302c32352c3138342c3136302c3134312c3233372c32362c3136382c35342c3233392c3230342c3133392c3131392c31332c3139395d" ) ,
52
58
( "ERA_READER_ADAPTER_TYPE" , "dummy" ) ,
53
59
( "ERA_READER_ADAPTER_PARAMS" , & era_reader_adapter_params) ,
54
60
( "SIGNED_ENTITY_TYPES" , & signed_entity_types) ,
55
61
( "CARDANO_NODE_VERSION" , "8.1.2" ) ,
56
- ( "CARDANO_NODE_VERSION " , "8.1.2" ) ,
62
+ ( "CHAIN_OBSERVER_TYPE " , aggregator_config . chain_observer_type ) ,
57
63
] ) ;
58
- let args = vec ! [ "--db-directory" , bft_node. db_path. to_str( ) . unwrap( ) , "-vvv" ] ;
64
+ let args = vec ! [
65
+ "--db-directory" ,
66
+ aggregator_config. bft_node. db_path. to_str( ) . unwrap( ) ,
67
+ "-vvv" ,
68
+ ] ;
59
69
60
- let command = MithrilCommand :: new ( "mithril-aggregator" , work_dir, bin_dir, env, & args) ?;
70
+ let command = MithrilCommand :: new (
71
+ "mithril-aggregator" ,
72
+ aggregator_config. work_dir ,
73
+ aggregator_config. bin_dir ,
74
+ env,
75
+ & args,
76
+ ) ?;
61
77
62
78
Ok ( Self {
63
- server_port,
64
- db_directory : bft_node. db_path . clone ( ) ,
79
+ server_port : aggregator_config . server_port ,
80
+ db_directory : aggregator_config . bft_node . db_path . clone ( ) ,
65
81
command,
66
82
process : None ,
67
83
} )
0 commit comments