Skip to main content

SyncManager

Struct SyncManager 

Source
pub struct SyncManager { /* private fields */ }
Expand description

The sync manager drives chain synchronization.

It processes peer events, manages the block index, and coordinates header/block downloads across multiple peers.

Implementations§

Source§

impl SyncManager

Source

pub fn new(block_index: Arc<RwLock<BlockIndex>>) -> Self

Create a new sync manager with the given block index.

Source

pub fn state(&self) -> SyncState

Get the current sync state.

Source

pub fn blocks_remaining(&self) -> usize

Get the number of blocks remaining to download.

Source

pub async fn on_peer_event( &mut self, event: PeerEvent, peer_manager: &dyn PeerManager, block_store: &dyn BlockStore, chain_state: &dyn ChainStateStore, mempool: &dyn MempoolPort, ) -> Result<Vec<SyncAction>, Box<dyn Error + Send + Sync>>

Process a peer event. Returns a list of actions the caller should take (send messages, store blocks, etc.).

Source

pub async fn on_getdata_with_mempool( &mut self, peer_id: u64, items: Vec<InventoryItem>, block_store: &dyn BlockStore, mempool: &dyn MempoolPort, ) -> Result<Vec<SyncAction>, Box<dyn Error + Send + Sync>>

Process a getdata request that may include transactions.

This is the full version that also serves transactions from the mempool.

Source

pub async fn announce_block( &self, block_hash: BlockHash, from_peer: Option<u64>, peer_manager: &dyn PeerManager, ) -> Result<(), Box<dyn Error + Send + Sync>>

Announce a newly connected block to all connected peers.

Sends an inv message with the block hash to every peer except the one that sent it to us (if known).

Source

pub async fn announce_transaction( &self, txid: Txid, from_peer: Option<u64>, peer_manager: &dyn PeerManager, ) -> Result<(), Box<dyn Error + Send + Sync>>

Announce a new transaction to all connected peers.

Sends an inv message with the txid to every peer except the one that sent it to us (if known). This is called when a transaction is accepted into the mempool.

Source

pub fn known_address_count(&self) -> usize

Get the number of known peer addresses.

Source

pub fn is_banned(&self, addr: &SocketAddr) -> bool

Check whether a given address is currently banned.

Source

pub fn peer_ban_score(&self, peer_id: u64) -> i32

Get the ban score for a connected peer.

Source

pub fn orphan_tx_count(&self) -> usize

Get the number of orphan transactions currently held.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more