From 4403d8a89e0ba9a6c13e3f504c3658c694ca1fb5 Mon Sep 17 00:00:00 2001 From: Svyatoslav Nikolsky Date: Fri, 29 Jun 2018 17:10:10 +0300 Subject: [PATCH] DB-based light client backend (#250) * use db in light clients * fixed comment * fixed grumbles --- polkadot/service/src/components.rs | 14 +++++++++----- polkadot/service/src/lib.rs | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/polkadot/service/src/components.rs b/polkadot/service/src/components.rs index 7211fa660b..846c51dc91 100644 --- a/polkadot/service/src/components.rs +++ b/polkadot/service/src/components.rs @@ -116,15 +116,19 @@ impl Components for FullComponents { pub struct LightComponents; impl Components for LightComponents { - type Backend = client::light::Backend; + type Backend = client::light::backend::Backend, network::OnDemand>>; type Api = polkadot_api::light::RemotePolkadotApiWrapper; - type Executor = client::RemoteCallExecutor, network::OnDemand>>; + type Executor = client::light::call_executor::RemoteCallExecutor< + client::light::blockchain::Blockchain, network::OnDemand>>, + network::OnDemand>>; - fn build_client(&self, _settings: client_db::DatabaseSettings, executor: CodeExecutor, genesis_storage: MakeStorage) + fn build_client(&self, db_settings: client_db::DatabaseSettings, executor: CodeExecutor, genesis_storage: MakeStorage) -> Result<(Arc>, Option>>>), error::Error> { - let client_backend = client::light::new_light_backend(); - let fetch_checker = Arc::new(client::light::new_fetch_checker(client_backend.clone(), executor)); + let db_storage = client_db::light::LightStorage::new(db_settings)?; + let light_blockchain = client::light::new_light_blockchain(db_storage); + let fetch_checker = Arc::new(client::light::new_fetch_checker(light_blockchain.clone(), executor)); let fetcher = Arc::new(network::OnDemand::new(fetch_checker)); + let client_backend = client::light::new_light_backend(light_blockchain, fetcher.clone()); let client = client::light::new_light(client_backend, fetcher.clone(), genesis_storage)?; Ok((Arc::new(client), Some(fetcher))) } diff --git a/polkadot/service/src/lib.rs b/polkadot/service/src/lib.rs index 90dd96a329..5b7db92ff2 100644 --- a/polkadot/service/src/lib.rs +++ b/polkadot/service/src/lib.rs @@ -136,7 +136,7 @@ impl Service }, network_config: config.network, chain: client.clone(), - on_demand: on_demand.clone().map(|d| d as Arc), + on_demand: on_demand.clone().map(|d| d as Arc>), transaction_pool: transaction_pool_adapter, }; let network = network::Service::new(network_params)?;