1
1
use authority_selection_inherents:: AuthoritySelectionDataSource ;
2
2
use pallet_sidechain_rpc:: SidechainRpcDataSource ;
3
- use partner_chains_db_sync_data_sources:: {
4
- BlockDataSourceImpl , CachedTokenBridgeDataSourceImpl , CandidatesDataSourceImpl ,
5
- GovernedMapDataSourceCachedImpl , McFollowerMetrics , McHashDataSourceImpl ,
6
- SidechainRpcDataSourceImpl , StakeDistributionDataSourceImpl ,
7
- } ;
3
+ use partner_chains_data_source_metrics:: McFollowerMetrics ;
8
4
use partner_chains_demo_runtime:: AccountId ;
9
- use partner_chains_mock_data_sources:: {
10
- AuthoritySelectionDataSourceMock , BlockDataSourceMock , GovernedMapDataSourceMock ,
11
- McHashDataSourceMock , SidechainRpcDataSourceMock , StakeDistributionDataSourceMock ,
12
- TokenBridgeDataSourceMock ,
13
- } ;
14
5
use sc_service:: error:: Error as ServiceError ;
15
6
use sidechain_mc_hash:: McHashDataSource ;
16
7
use sp_block_participation:: inherent_data:: BlockParticipationDataSource ;
@@ -90,14 +81,15 @@ pub(crate) async fn create_cached_data_sources(
90
81
ServiceError :: Application ( format ! ( "Failed to create mock data sources: {err}" ) . into ( ) )
91
82
} ) ,
92
83
93
- DataSourceType :: Dolos => {
94
- Err ( ServiceError :: Application ( "Dolos data source is not implemented yet." . into ( ) ) )
95
- } ,
84
+ DataSourceType :: Dolos => create_dolos_data_sources ( ) . map_err ( |err| {
85
+ ServiceError :: Application ( format ! ( "Failed to create dolos data sources: {err}" ) . into ( ) )
86
+ } ) ,
96
87
}
97
88
}
98
89
99
90
pub fn create_mock_data_sources ( )
100
91
-> std:: result:: Result < DataSources , Box < dyn Error + Send + Sync + ' static > > {
92
+ use partner_chains_mock_data_sources:: * ;
101
93
let block = Arc :: new ( BlockDataSourceMock :: new_from_env ( ) ?) ;
102
94
Ok ( DataSources {
103
95
sidechain_rpc : Arc :: new ( SidechainRpcDataSourceMock :: new ( block. clone ( ) ) ) ,
@@ -109,6 +101,19 @@ pub fn create_mock_data_sources()
109
101
} )
110
102
}
111
103
104
+ pub fn create_dolos_data_sources ( )
105
+ -> std:: result:: Result < DataSources , Box < dyn Error + Send + Sync + ' static > > {
106
+ use partner_chains_dolos_data_sources:: * ;
107
+ Ok ( DataSources {
108
+ sidechain_rpc : Arc :: new ( SidechainRpcDataSourceImpl :: new ( ) ) ,
109
+ mc_hash : Arc :: new ( McHashDataSourceImpl :: new ( ) ) ,
110
+ authority_selection : Arc :: new ( AuthoritySelectionDataSourceImpl :: new ( ) ) ,
111
+ block_participation : Arc :: new ( StakeDistributionDataSourceImpl :: new ( ) ) ,
112
+ governed_map : Arc :: new ( GovernedMapDataSourceImpl :: default ( ) ) ,
113
+ bridge : Arc :: new ( TokenBridgeDataSourceImpl :: new ( ) ) ,
114
+ } )
115
+ }
116
+
112
117
pub const CANDIDATES_FOR_EPOCH_CACHE_SIZE : usize = 64 ;
113
118
pub const STAKE_CACHE_SIZE : usize = 100 ;
114
119
pub const GOVERNED_MAP_CACHE_SIZE : u16 = 100 ;
@@ -117,6 +122,7 @@ pub const BRIDGE_TRANSFER_CACHE_LOOKAHEAD: u32 = 1000;
117
122
pub async fn create_cached_db_sync_data_sources (
118
123
metrics_opt : Option < McFollowerMetrics > ,
119
124
) -> Result < DataSources , Box < dyn Error + Send + Sync + ' static > > {
125
+ use partner_chains_db_sync_data_sources:: * ;
120
126
let pool = partner_chains_db_sync_data_sources:: get_connection_from_env ( ) . await ?;
121
127
// block data source is reused between mc_hash and sidechain_rpc to share cache
122
128
let block = Arc :: new ( BlockDataSourceImpl :: new_from_env ( pool. clone ( ) ) . await ?) ;
0 commit comments