pub trait PeerStoreProvider: Debug + Send + Sync {
    // Required methods
    fn is_banned(&self, peer_id: &PeerId) -> bool;
    fn register_protocol(&self, protocol_handle: Arc<dyn ProtocolHandle>);
    fn report_disconnect(&self, peer_id: PeerId);
    fn report_peer(&self, peer_id: PeerId, change: ReputationChange);
    fn set_peer_role(&self, peer_id: &PeerId, role: ObservedRole);
    fn peer_reputation(&self, peer_id: &PeerId) -> i32;
    fn peer_role(&self, peer_id: &PeerId) -> Option<ObservedRole>;
    fn outgoing_candidates(
        &self,
        count: usize,
        ignored: HashSet<PeerId>
    ) -> Vec<PeerId>;
    fn num_known_peers(&self) -> usize;
    fn add_known_peer(&self, peer_id: PeerId);
}
Expand description

Trait providing peer reputation management and connection candidates.

Required Methods§

source

fn is_banned(&self, peer_id: &PeerId) -> bool

Check whether the peer is banned.

source

fn register_protocol(&self, protocol_handle: Arc<dyn ProtocolHandle>)

Register a protocol handle to disconnect peers whose reputation drops below the threshold.

source

fn report_disconnect(&self, peer_id: PeerId)

Report peer disconnection for reputation adjustment.

source

fn report_peer(&self, peer_id: PeerId, change: ReputationChange)

Adjust peer reputation.

source

fn set_peer_role(&self, peer_id: &PeerId, role: ObservedRole)

Set peer role.

source

fn peer_reputation(&self, peer_id: &PeerId) -> i32

Get peer reputation.

source

fn peer_role(&self, peer_id: &PeerId) -> Option<ObservedRole>

Get peer role, if available.

source

fn outgoing_candidates( &self, count: usize, ignored: HashSet<PeerId> ) -> Vec<PeerId>

Get candidates with highest reputations for initiating outgoing connections.

source

fn num_known_peers(&self) -> usize

Get the number of known peers.

This number might not include some connected peers in rare cases when their reputation was not updated for one hour, because their entries in PeerStore were dropped.

source

fn add_known_peer(&self, peer_id: PeerId)

Add known peer.

Implementors§