@@ -7,7 +7,7 @@ use sidechain_mc_hash::McHashDataSource;
77use sp_block_participation:: inherent_data:: BlockParticipationDataSource ;
88use sp_governed_map:: GovernedMapDataSource ;
99use sp_partner_chains_bridge:: TokenBridgeDataSource ;
10- use std:: { error:: Error , sync:: Arc } ;
10+ use std:: { error:: Error , sync:: Arc , time :: Duration } ;
1111
1212pub const DATA_SOURCE_VAR : & str = "CARDANO_DATA_SOURCE" ;
1313
@@ -81,7 +81,7 @@ pub(crate) async fn create_cached_data_sources(
8181 ServiceError :: Application ( format ! ( "Failed to create mock data sources: {err}" ) . into ( ) )
8282 } ) ,
8383
84- DataSourceType :: Dolos => create_dolos_data_sources ( ) . map_err ( |err| {
84+ DataSourceType :: Dolos => create_dolos_data_sources ( metrics_opt ) . await . map_err ( |err| {
8585 ServiceError :: Application ( format ! ( "Failed to create dolos data sources: {err}" ) . into ( ) )
8686 } ) ,
8787 }
@@ -101,16 +101,58 @@ pub fn create_mock_data_sources()
101101 } )
102102}
103103
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:: * ;
104+ // Currently uses db-sync for unimplemented dolos data sources
105+ pub async fn create_dolos_data_sources (
106+ metrics_opt : Option < McFollowerMetrics > ,
107+ ) -> std:: result:: Result < DataSources , Box < dyn Error + Send + Sync + ' static > > {
108+ let dolos_client = partner_chains_dolos_data_sources:: client:: MiniBFClient :: new (
109+ "http://localhost:3000" ,
110+ Duration :: from_secs ( 5 ) ,
111+ ) ;
112+ let pool = partner_chains_db_sync_data_sources:: get_connection_from_env ( ) . await ?;
113+ // block data source is reused between mc_hash and sidechain_rpc to share cache
114+ let block = Arc :: new (
115+ partner_chains_db_sync_data_sources:: BlockDataSourceImpl :: new_from_env ( pool. clone ( ) )
116+ . await ?,
117+ ) ;
107118 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 ( ) ) ,
119+ sidechain_rpc : Arc :: new (
120+ partner_chains_dolos_data_sources:: SidechainRpcDataSourceImpl :: new (
121+ dolos_client. clone ( ) ,
122+ ) ,
123+ ) ,
124+ mc_hash : Arc :: new ( partner_chains_dolos_data_sources:: McHashDataSourceImpl :: new (
125+ dolos_client. clone ( ) ,
126+ ) ) ,
127+ authority_selection : Arc :: new (
128+ partner_chains_dolos_data_sources:: AuthoritySelectionDataSourceImpl :: new (
129+ dolos_client. clone ( ) ,
130+ ) ,
131+ ) ,
132+ block_participation : Arc :: new (
133+ partner_chains_db_sync_data_sources:: StakeDistributionDataSourceImpl :: new (
134+ pool. clone ( ) ,
135+ metrics_opt. clone ( ) ,
136+ STAKE_CACHE_SIZE ,
137+ ) ,
138+ ) ,
139+ governed_map : Arc :: new (
140+ partner_chains_db_sync_data_sources:: GovernedMapDataSourceCachedImpl :: new (
141+ pool. clone ( ) ,
142+ metrics_opt. clone ( ) ,
143+ GOVERNED_MAP_CACHE_SIZE ,
144+ block. clone ( ) ,
145+ )
146+ . await ?,
147+ ) ,
148+ bridge : Arc :: new (
149+ partner_chains_db_sync_data_sources:: CachedTokenBridgeDataSourceImpl :: new (
150+ pool,
151+ metrics_opt,
152+ block,
153+ BRIDGE_TRANSFER_CACHE_LOOKAHEAD ,
154+ ) ,
155+ ) ,
114156 } )
115157}
116158
0 commit comments