@@ -2,7 +2,7 @@ pub use crate::cardano_node::settings::Settings;
22use crate :: cardano_node:: { Block0 , BlockBuilder } ;
33use crate :: db_sync:: { InMemoryDbSync , SharedInMemoryDbSync } ;
44use crate :: wallet:: CardanoWallet ;
5- use crate :: InMemoryNode ;
5+ use crate :: { InMemoryNode , Ledger } ;
66use cardano_serialization_lib:: address:: Address ;
77use cardano_serialization_lib:: Transaction ;
88use jormungandr_lib:: crypto:: account:: Identifier ;
@@ -24,43 +24,19 @@ impl MainnetNetworkBuilder {
2424 self
2525 }
2626
27- /// Builds dbsync instance and set or representatives identifiers
28- ///
29- /// # Panics
30- ///
31- /// On internal logic issue
27+ /// Builds block0
3228 #[ must_use]
33- pub fn in_memory_internal ( self ) -> ( SharedInMemoryDbSync , InMemoryNode , HashSet < Identifier > ) {
29+ pub fn build_block0 ( & self ) -> Block0 {
3430 let txs: Vec < _ > = self
3531 . states
3632 . iter ( )
3733 . filter_map ( |x| x. registration_tx . clone ( ) )
3834 . collect ( ) ;
3935
40- let block0 = Block0 {
36+ Block0 {
4137 block : BlockBuilder :: next_block ( None , & txs) ,
42- settings : self . settings ,
43- } ;
44-
45- let mut node = InMemoryNode :: start ( block0) ;
46-
47- (
48- InMemoryDbSync :: default ( ) . connect_to_node ( & mut node) ,
49- node,
50- self . states
51- . iter ( )
52- . map ( |x| x. rep . as_ref ( ) )
53- . filter ( Option :: is_some)
54- . map ( |x| x. unwrap ( ) . clone ( ) )
55- . collect ( ) ,
56- )
57- }
58-
59- /// Builds dbsync instance and set or representatives identifiers
60- #[ must_use]
61- pub fn shared ( self ) -> ( SharedInMemoryDbSync , InMemoryNode , HashSet < Identifier > ) {
62- let ( db_sync, mut node, reps) = self . build ( ) ;
63- ( db_sync. connect_to_node ( & mut node) , node, reps)
38+ settings : self . settings . clone ( ) ,
39+ }
6440 }
6541
6642 /// Builds dbsync instance and set or representatives identifiers
@@ -69,23 +45,14 @@ impl MainnetNetworkBuilder {
6945 ///
7046 /// On internal logic issue
7147 #[ must_use]
72- pub fn build ( self ) -> ( InMemoryDbSync , InMemoryNode , HashSet < Identifier > ) {
73- let txs: Vec < _ > = self
74- . states
75- . iter ( )
76- . filter_map ( |x| x. registration_tx . clone ( ) )
77- . collect ( ) ;
78-
79- let block0 = Block0 {
80- block : BlockBuilder :: next_block ( None , & txs) ,
81- settings : self . settings ,
82- } ;
83-
84- let node = InMemoryNode :: start ( block0) ;
48+ pub fn build ( self ) -> ( InMemoryDbSync , Ledger , HashSet < Identifier > ) {
49+ let block0 = self . build_block0 ( ) ;
50+ let db_sync = InMemoryDbSync :: from_block0 ( & block0) ;
51+ let ledger = Ledger :: new ( block0) ;
8552
8653 (
87- InMemoryDbSync :: default ( ) ,
88- node ,
54+ db_sync ,
55+ ledger ,
8956 self . states
9057 . iter ( )
9158 . map ( |x| x. rep . as_ref ( ) )
@@ -94,6 +61,18 @@ impl MainnetNetworkBuilder {
9461 . collect ( ) ,
9562 )
9663 }
64+
65+ /// Builds dbsync instance and set or representatives identifiers tailored for async usage
66+ ///
67+ /// # Panics
68+ ///
69+ /// On internal logic issue
70+ #[ must_use]
71+ pub fn build_shared ( self ) -> ( SharedInMemoryDbSync , InMemoryNode , HashSet < Identifier > ) {
72+ let ( db_sync, ledger, reps) = self . build ( ) ;
73+ let mut node = InMemoryNode :: start_from_ledger ( ledger) ;
74+ ( db_sync. connect_to_node ( & mut node) , node, reps)
75+ }
9776}
9877
9978/// Wallet state builder for Network state builder is a trait which creates nice interface for
0 commit comments