Struct Network

Source
pub struct Network<TTrans, TInEvent, TOutEvent, THandler>
where TTrans: Transport, THandler: IntoConnectionHandler,
{ /* private fields */ }
Expand description

Implementation of Stream that handles the nodes.

Implementations§

Source§

impl<TTrans, TInEvent, TOutEvent, TMuxer, THandler> Network<TTrans, TInEvent, TOutEvent, THandler>
where TTrans: Transport + Clone, TMuxer: StreamMuxer, THandler: IntoConnectionHandler + Send + 'static, THandler::Handler: ConnectionHandler<Substream = Substream<TMuxer>, InEvent = TInEvent, OutEvent = TOutEvent> + Send, <THandler::Handler as ConnectionHandler>::OutboundOpenInfo: Send, <THandler::Handler as ConnectionHandler>::Error: Error + Send,

Source

pub fn new( transport: TTrans, local_peer_id: PeerId, config: NetworkConfig, ) -> Self

Creates a new node events stream.

Source

pub fn transport(&self) -> &TTrans

Returns the transport passed when building this object.

Source

pub fn listen_on( &mut self, addr: Multiaddr, ) -> Result<ListenerId, TransportError<TTrans::Error>>

Start listening on the given multiaddress.

Source

pub fn remove_listener(&mut self, id: ListenerId) -> Result<(), ()>

Remove a previously added listener.

Returns Ok(()) if a listener with this ID was in the list.

Source

pub fn listen_addrs(&self) -> impl Iterator<Item = &Multiaddr>

Returns an iterator that produces the list of addresses we are listening on.

Source

pub fn address_translation<'a>( &'a self, observed_addr: &'a Multiaddr, ) -> impl Iterator<Item = Multiaddr> + 'a
where TMuxer: 'a, THandler: 'a,

Maps the given observed_addr, representing an address of the local node observed by a remote peer, onto the locally known listen addresses to yield one or more addresses of the local node that may be publicly reachable.

I.e. this method incorporates the view of other peers into the listen addresses seen by the local node to account for possible IP and port mappings performed by intermediate network devices in an effort to obtain addresses for the local peer that are also reachable for peers other than the peer who reported the observed_addr.

The translation is transport-specific. See Transport::address_translation.

Source

pub fn local_peer_id(&self) -> &PeerId

Returns the peer id of the local node.

Source

pub fn dial( &mut self, address: &Multiaddr, handler: THandler, ) -> Result<ConnectionId, ConnectionLimit>
where TTrans: Transport<Output = (PeerId, TMuxer)>, TTrans::Error: Send + 'static, TTrans::Dial: Send + 'static, TMuxer: Send + Sync + 'static, TMuxer::OutboundSubstream: Send, TInEvent: Send + 'static, TOutEvent: Send + 'static,

Dials a multiaddress without expecting a particular remote peer ID.

The given handler will be used to create the Connection upon success and the connection ID is returned.

Source

pub fn info(&self) -> NetworkInfo

Returns information about the state of the Network.

Source

pub fn incoming_info(&self) -> impl Iterator<Item = IncomingInfo<'_>>

Returns an iterator for information on all pending incoming connections.

Source

pub fn unknown_dials(&self) -> impl Iterator<Item = &Multiaddr>

Returns the list of addresses we’re currently dialing without knowing the PeerId of.

Source

pub fn connected_peers(&self) -> impl Iterator<Item = &PeerId>

Returns a list of all connected peers, i.e. peers to whom the Network has at least one established connection.

Source

pub fn is_connected(&self, peer: &PeerId) -> bool

Checks whether the network has an established connection to a peer.

Source

pub fn is_dialing(&self, peer: &PeerId) -> bool

Checks whether the network has an ongoing dialing attempt to a peer.

Source

pub fn is_disconnected(&self, peer: &PeerId) -> bool

Checks whether the network has neither an ongoing dialing attempt, nor an established connection to a peer.

Source

pub fn dialing_peers(&self) -> impl Iterator<Item = &PeerId>

Returns a list of all the peers to whom a new outgoing connection is currently being established.

Source

pub fn peer( &mut self, peer_id: PeerId, ) -> Peer<'_, TTrans, TInEvent, TOutEvent, THandler>

Obtains a view of a Peer with the given ID in the network.

Source

pub fn accept( &mut self, connection: IncomingConnection<TTrans::ListenerUpgrade>, handler: THandler, ) -> Result<ConnectionId, ConnectionLimit>
where TInEvent: Send + 'static, TOutEvent: Send + 'static, TMuxer: StreamMuxer + Send + Sync + 'static, TMuxer::OutboundSubstream: Send, TTrans: Transport<Output = (PeerId, TMuxer)>, TTrans::Error: Send + 'static, TTrans::ListenerUpgrade: Send + 'static,

Accepts a pending incoming connection obtained via NetworkEvent::IncomingConnection, adding it to the Networks connection pool subject to the configured limits.

Once the connection is established and all transport protocol upgrades completed, the connection is associated with the provided handler.

Source

pub fn poll<'a>( &'a mut self, cx: &mut Context<'_>, ) -> Poll<NetworkEvent<'a, TTrans, TInEvent, TOutEvent, THandler>>
where TTrans: Transport<Output = (PeerId, TMuxer)>, TTrans::Error: Send + 'static, TTrans::Dial: Send + 'static, TTrans::ListenerUpgrade: Send + 'static, TMuxer: Send + Sync + 'static, TMuxer::OutboundSubstream: Send, TInEvent: Send + 'static, TOutEvent: Send + 'static, THandler: IntoConnectionHandler + Send + 'static, THandler::Handler: ConnectionHandler<Substream = Substream<TMuxer>, InEvent = TInEvent, OutEvent = TOutEvent> + Send + 'static, <THandler::Handler as ConnectionHandler>::Error: Error + Send + 'static,

Provides an API similar to Stream, except that it cannot error.

Trait Implementations§

Source§

impl<TTrans, TInEvent, TOutEvent, THandler> Debug for Network<TTrans, TInEvent, TOutEvent, THandler>
where TTrans: Debug + Transport, THandler: Debug + ConnectionHandler,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<TTrans, TInEvent, TOutEvent, THandler> Unpin for Network<TTrans, TInEvent, TOutEvent, THandler>
where TTrans: Transport, THandler: IntoConnectionHandler,

Auto Trait Implementations§

§

impl<TTrans, TInEvent, TOutEvent, THandler> !Freeze for Network<TTrans, TInEvent, TOutEvent, THandler>

§

impl<TTrans, TInEvent, TOutEvent, THandler> !RefUnwindSafe for Network<TTrans, TInEvent, TOutEvent, THandler>

§

impl<TTrans, TInEvent, TOutEvent, THandler> Send for Network<TTrans, TInEvent, TOutEvent, THandler>
where TTrans: Send, THandler: Send, TOutEvent: Send, <TTrans as Transport>::Listener: Send, <TTrans as Transport>::Error: Send, <<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::Error: Send, TInEvent: Send,

§

impl<TTrans, TInEvent, TOutEvent, THandler> !Sync for Network<TTrans, TInEvent, TOutEvent, THandler>

§

impl<TTrans, TInEvent, TOutEvent, THandler> !UnwindSafe for Network<TTrans, TInEvent, TOutEvent, THandler>

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, 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
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> ErasedDestructor for T
where T: 'static,