pub struct Manager<PK: PublicKey + PeerId, A: Data, D: Data> {
    wanted: DirectedPeers<PK, A>,
    have: HashMap<PK, UnboundedSender<D>>,
}
Expand description

Network component responsible for holding the list of peers that we want to connect to or let them connect to us, and managing the established connections.

Fields§

§wanted: DirectedPeers<PK, A>§have: HashMap<PK, UnboundedSender<D>>

Implementations§

source§

impl<PK: PublicKey + PeerId, A: Data, D: Data> Manager<PK, A, D>

source

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

Create a new Manager with empty list of peers.

source

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

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 depends on the coorddinated pseudorandom decision on the direction of the connection and whether this 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 add_connection( &mut self, peer_id: PK, data_for_network: UnboundedSender<D> ) -> AddResult

Add an established connection with a known peer, but only if the peer is among the peers we want to be connected 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. Close any incoming and outgoing connections that were established.

source

pub fn send_to(&mut self, peer_id: &PK, data: D) -> Result<(), SendError>

Send data to a peer. Returns error if there is no outgoing connection to the peer, or if the connection is dead.

source

pub fn status_report(&self) -> ManagerStatus<PK>

A status of the manager, to be displayed somewhere.

source

pub fn is_authorized(&self, public_key: &PK) -> bool

Auto Trait Implementations§

§

impl<PK, A, D> !RefUnwindSafe for Manager<PK, A, D>

§

impl<PK, A, D> Send for Manager<PK, A, D>

§

impl<PK, A, D> Sync for Manager<PK, A, D>

§

impl<PK, A, D> Unpin for Manager<PK, A, D>
where A: Unpin, PK: Unpin,

§

impl<PK, A, D> !UnwindSafe for Manager<PK, A, D>

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