pub struct DirectedPeers<PK: PublicKey, A: Data> {
    own_id: PK,
    outgoing: HashMap<PK, A>,
    incoming: HashSet<PK>,
    metrics: Metrics,
}
Expand description

Data about peers we know and whether we should connect to them or they to us. For the former case also keeps the peers’ addresses.

Fields§

§own_id: PK§outgoing: HashMap<PK, A>§incoming: HashSet<PK>§metrics: Metrics

Implementations§

source§

impl<PK: PublicKey, A: Data> DirectedPeers<PK, A>

source

pub fn new(own_id: PK, metrics: Metrics) -> Self

Create a new set of peers directed using our own peer id.

source

pub fn add_peer(&mut self, peer_id: PK, address: A) -> bool

Add a peer to the list of peers we want to stay connected to, or update the address if the peer was already added. Returns whether we should start attempts at connecting with the peer, which is the case exactly when the peer is one with which we should attempt connections AND it was added for the first time.

source

pub fn peer_address(&self, peer_id: &PK) -> Option<A>

Return the address of the given peer, or None if we shouldn’t attempt connecting with the peer.

source

pub fn interested(&self, peer_id: &PK) -> bool

Whether we should be maintaining a connection with this peer.

source

pub fn incoming_peers(&self) -> impl Iterator<Item = &PK>

Iterator over the peers we want connections from.

source

pub fn outgoing_peers(&self) -> impl Iterator<Item = &PK>

Iterator over the peers we want to connect to.

source

pub fn remove_peer(&mut self, peer_id: &PK)

Remove a peer from the list of peers that we want to stay connected with, whether the connection was supposed to be incoming or outgoing.

Auto Trait Implementations§

§

impl<PK, A> RefUnwindSafe for DirectedPeers<PK, A>

§

impl<PK, A> Send for DirectedPeers<PK, A>

§

impl<PK, A> Sync for DirectedPeers<PK, A>

§

impl<PK, A> Unpin for DirectedPeers<PK, A>
where A: Unpin, PK: Unpin,

§

impl<PK, A> UnwindSafe for DirectedPeers<PK, A>
where A: UnwindSafe, PK: UnwindSafe,

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.

§

impl<T> Instrument for T

§

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

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

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, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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