Struct sc_network_sync::engine::SyncingEngine
source · pub struct SyncingEngine<B: BlockT, Client> { /* private fields */ }
Implementations§
source§impl<B, Client> SyncingEngine<B, Client>where
B: BlockT,
Client: HeaderBackend<B> + BlockBackend<B> + HeaderMetadata<B, Error = Error> + ProofProvider<B> + Send + Sync + 'static,
impl<B, Client> SyncingEngine<B, Client>where B: BlockT, Client: HeaderBackend<B> + BlockBackend<B> + HeaderMetadata<B, Error = Error> + ProofProvider<B> + Send + Sync + 'static,
pub fn new( roles: Roles, client: Arc<Client>, metrics_registry: Option<&Registry>, net_config: &FullNetworkConfiguration, protocol_id: ProtocolId, fork_id: &Option<String>, block_announce_validator: Box<dyn BlockAnnounceValidator<B> + Send>, warp_sync_params: Option<WarpSyncParams<B>>, network_service: NetworkServiceHandle, import_queue: Box<dyn ImportQueueService<B>>, block_request_protocol_name: ProtocolName, state_request_protocol_name: ProtocolName, warp_sync_protocol_name: Option<ProtocolName>, rx: TracingUnboundedReceiver<SyncEvent<B>> ) -> Result<(Self, SyncingService<B>, NonDefaultSetConfig), ClientError>
sourcepub fn report_metrics(&self)
pub fn report_metrics(&self)
Report Prometheus metrics.
sourcepub fn process_block_announce_validation_result(
&mut self,
validation_result: PollBlockAnnounceValidation<B::Header>
)
pub fn process_block_announce_validation_result( &mut self, validation_result: PollBlockAnnounceValidation<B::Header> )
Process the result of the block announce validation.
sourcepub fn push_block_announce_validation(
&mut self,
who: PeerId,
announce: BlockAnnounce<B::Header>
)
pub fn push_block_announce_validation( &mut self, who: PeerId, announce: BlockAnnounce<B::Header> )
Push a block announce validation.
It is required that ChainSync::poll_block_announce_validation
is
called later to check for finished validations. The result of the validation
needs to be passed to SyncingEngine::process_block_announce_validation_result
to finish the processing.
Note
This will internally create a future, but this future will not be registered
in the task before being polled once. So, it is required to call
ChainSync::poll_block_announce_validation
to ensure that the future is
registered properly and will wake up the task when being ready.
sourcepub fn announce_block(&mut self, hash: B::Hash, data: Option<Vec<u8>>)
pub fn announce_block(&mut self, hash: B::Hash, data: Option<Vec<u8>>)
Make sure an important block is propagated to peers.
In chain-based consensus, we often need to make sure non-best forks are at least temporarily synced.
sourcepub fn new_best_block_imported(&mut self, hash: B::Hash, number: NumberFor<B>)
pub fn new_best_block_imported(&mut self, hash: B::Hash, number: NumberFor<B>)
Inform sync about new best imported block.
pub async fn run(self)
pub fn poll(&mut self, cx: &mut Context<'_>) -> Poll<()>
sourcepub fn on_sync_peer_disconnected(&mut self, peer: PeerId) -> Result<(), ()>
pub fn on_sync_peer_disconnected(&mut self, peer: PeerId) -> Result<(), ()>
Called by peer when it is disconnecting.
Returns a result if the handshake of this peer was indeed accepted.
sourcepub fn on_sync_peer_connected(
&mut self,
who: PeerId,
status: &BlockAnnouncesHandshake<B>,
sink: NotificationsSink,
inbound: bool
) -> Result<(), ()>
pub fn on_sync_peer_connected( &mut self, who: PeerId, status: &BlockAnnouncesHandshake<B>, sink: NotificationsSink, inbound: bool ) -> Result<(), ()>
Called on the first connection between two peers on the default set, after their exchange of handshake.
Returns Ok
if the handshake is accepted and the peer added to the list of peers we sync
from.
Auto Trait Implementations§
impl<B, Client> !RefUnwindSafe for SyncingEngine<B, Client>
impl<B, Client> Send for SyncingEngine<B, Client>where Client: Send + Sync,
impl<B, Client> !Sync for SyncingEngine<B, Client>
impl<B, Client> Unpin for SyncingEngine<B, Client>where <B as Block>::Extrinsic: Unpin, <B as Block>::Hash: Unpin, <B as Block>::Header: Unpin, <<B as Block>::Header as Header>::Number: Unpin,
impl<B, Client> !UnwindSafe for SyncingEngine<B, Client>
Blanket Implementations§
source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for 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, Outer> IsWrappedBy<Outer> for Twhere
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
impl<T, Outer> IsWrappedBy<Outer> for Twhere Outer: AsRef<T> + AsMut<T> + From<T>, T: From<Outer>,
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
source§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere Self: UniqueSaturatedFrom<T>,
source§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere Self: UniqueSaturatedInto<T>,
T
. Read moresource§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere T: UncheckedFrom<S>,
source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from
.source§impl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
impl<T, S> UniqueSaturatedInto<T> for Swhere T: Bounded, S: TryInto<T>,
source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.