pub struct Syncer { /* private fields */ }Expand description
Manager in charge the sync process
Implementations§
Source§impl Syncer
impl Syncer
pub fn new( peers: PeerHandler, snap_enabled: Arc<AtomicBool>, cancel_token: CancellationToken, blockchain: Arc<Blockchain>, datadir: PathBuf, diagnostics: Arc<RwLock<SyncDiagnostics>>, ) -> Self
Sourcepub async fn start_sync(&mut self, sync_head: H256, store: Store)
pub async fn start_sync(&mut self, sync_head: H256, store: Store)
Starts a sync cycle, updating the state with all blocks between the current head and the sync head
Will perform either full or snap sync depending on the manager’s snap_mode
In full mode, all blocks will be fetched via p2p eth requests and executed to rebuild the state
In snap mode, blocks and receipts will be fetched and stored in parallel while the state is fetched via p2p snap requests
After the sync cycle is complete, the sync mode will be set to full
If the sync fails, no error will be returned but a warning will be emitted
[WARNING] Sync is done optimistically, so headers and bodies may be stored even if their data has not been fully synced if the sync is aborted halfway
[WARNING] Sync is currenlty simplified and will not download bodies + receipts previous to the pivot during snap sync
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for Syncer
impl !UnwindSafe for Syncer
impl Freeze for Syncer
impl Send for Syncer
impl Sync for Syncer
impl Unpin for Syncer
impl UnsafeUnpin for Syncer
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.