Network sync refactoring (part 5) (#11825)

* Make `chain_sync` an explicit networking parameter instead of offering factory method

* Derive `Copy` on `SyncMode` and remove cloning
This commit is contained in:
Nazar Mokrynskyi
2022-07-29 23:17:49 +03:00
committed by GitHub
parent 3a4ad68d09
commit 56f16f5500
5 changed files with 69 additions and 84 deletions
+18 -14
View File
@@ -838,10 +838,25 @@ where
protocol_config
};
let max_parallel_downloads = network_config.max_parallel_downloads;
let block_announce_validator = config
.block_announce_validator
.unwrap_or_else(|| Box::new(DefaultBlockAnnounceValidator));
let chain_sync = ChainSync::new(
match network_config.sync_mode {
SyncMode::Full => sc_network_common::sync::SyncMode::Full,
SyncMode::Fast { skip_proofs, storage_chain_mode } =>
sc_network_common::sync::SyncMode::LightState {
skip_proofs,
storage_chain_mode,
},
SyncMode::Warp => sc_network_common::sync::SyncMode::Warp,
},
client.clone(),
block_announce_validator,
network_config.max_parallel_downloads,
Some(warp_sync),
)
.unwrap();
let network = NetworkWorker::new(sc_network::config::Params {
role: if config.is_authority { Role::Authority } else { Role::Full },
executor: None,
@@ -853,23 +868,12 @@ where
transaction_pool: Arc::new(EmptyTransactionPool),
protocol_id,
import_queue,
create_chain_sync: Box::new(move |sync_mode, chain, warp_sync_provider| {
match ChainSync::new(
sync_mode,
chain,
block_announce_validator,
max_parallel_downloads,
warp_sync_provider,
) {
Ok(chain_sync) => Ok(Box::new(chain_sync)),
Err(error) => Err(Box::new(error).into()),
}
}),
chain_sync: Box::new(chain_sync),
metrics_registry: None,
block_request_protocol_config,
state_request_protocol_config,
light_client_request_protocol_config,
warp_sync: Some((warp_sync, warp_protocol_config)),
warp_sync_protocol_config: Some(warp_protocol_config),
})
.unwrap();