mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-26 19:17:58 +00:00
1cd6acdff3
This PR moves syncing-related code from `sc-network-common` to `sc-network-sync`. Unfortunately, some parts are tightly integrated with networking, so they were left in `sc-network-common` for now: 1. `SyncMode` in `common/src/sync.rs` (used in `NetworkConfiguration`). 2. `BlockAnnouncesHandshake`, `BlockRequest`, `BlockResponse`, etc. in `common/src/sync/message.rs` (used in `src/protocol.rs` and `src/protocol/message.rs`). More substantial refactoring is needed to decouple syncing and networking completely, including getting rid of the hardcoded sync protocol. ## Release notes Move syncing-related code from `sc-network-common` to `sc-network-sync`. Delete `ChainSync` trait as it's never used (the only implementation is accessed directly from `SyncingEngine` and exposes a lot of public methods that are not part of the trait). Some new trait(s) for syncing will likely be introduced as part of Sync 2.0 refactoring to represent syncing strategies.
56 lines
1.6 KiB
Rust
56 lines
1.6 KiB
Rust
// This file is part of Substrate.
|
|
|
|
// Copyright (C) Parity Technologies (UK) Ltd.
|
|
// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0
|
|
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
//! Abstract interfaces and data structures related to network sync.
|
|
|
|
pub mod message;
|
|
|
|
/// Sync operation mode.
|
|
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
|
|
pub enum SyncMode {
|
|
/// Full block download and verification.
|
|
Full,
|
|
/// Download blocks and the latest state.
|
|
LightState {
|
|
/// Skip state proof download and verification.
|
|
skip_proofs: bool,
|
|
/// Download indexed transactions for recent blocks.
|
|
storage_chain_mode: bool,
|
|
},
|
|
/// Warp sync - verify authority set transitions and the latest state.
|
|
Warp,
|
|
}
|
|
|
|
impl SyncMode {
|
|
/// Returns `true` if `self` is [`Self::Warp`].
|
|
pub fn is_warp(&self) -> bool {
|
|
matches!(self, Self::Warp)
|
|
}
|
|
|
|
/// Returns `true` if `self` is [`Self::LightState`].
|
|
pub fn light_state(&self) -> bool {
|
|
matches!(self, Self::LightState { .. })
|
|
}
|
|
}
|
|
|
|
impl Default for SyncMode {
|
|
fn default() -> Self {
|
|
Self::Full
|
|
}
|
|
}
|