Struct libp2p_core::network::Network [−][src]
pub struct Network<TTrans, TInEvent, TOutEvent, THandler> where
TTrans: Transport,
THandler: IntoConnectionHandler, { /* fields omitted */ }Expand description
Implementation of Stream that handles the nodes.
Implementations
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,
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, Creates a new node events stream.
pub fn listen_on(
&mut self,
addr: Multiaddr
) -> Result<ListenerId, TransportError<TTrans::Error>>
pub fn listen_on(
&mut self,
addr: Multiaddr
) -> Result<ListenerId, TransportError<TTrans::Error>>Start listening on the given multiaddress.
Remove a previously added listener.
Returns Ok(()) if a listener with this ID was in the list.
Returns an iterator that produces the list of addresses we are listening on.
pub fn address_translation<'a>(
&'a self,
observed_addr: &'a Multiaddr
) -> Vec<Multiaddr> where
TMuxer: 'a,
THandler: 'a,
pub fn address_translation<'a>(
&'a self,
observed_addr: &'a Multiaddr
) -> Vec<Multiaddr> 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.
Returns the peer id of the local node.
pub fn dial(
&mut self,
address: &Multiaddr,
handler: THandler
) -> Result<ConnectionId, DialError> 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,
pub fn dial(
&mut self,
address: &Multiaddr,
handler: THandler
) -> Result<ConnectionId, DialError> 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 Multiaddr that may or may not encapsulate a
specific expected remote peer ID.
The given handler will be used to create the
Connection upon success and the
connection ID is returned.
Returns information about the state of the Network.
Returns an iterator for information on all pending incoming connections.
Returns the list of addresses we’re currently dialing without knowing the PeerId of.
Returns a list of all connected peers, i.e. peers to whom the Network
has at least one established connection.
Checks whether the network has an established connection to a peer.
Checks whether the network has an ongoing dialing attempt to a peer.
Checks whether the network has neither an ongoing dialing attempt, nor an established connection to a peer.
Returns a list of all the peers to whom a new outgoing connection is currently being established.
Obtains a view of a Peer with the given ID in the network.
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,
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.
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,
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
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> !RefUnwindSafe for Network<TTrans, TInEvent, TOutEvent, THandler>impl<TTrans, TInEvent, TOutEvent, THandler> Send for Network<TTrans, TInEvent, TOutEvent, THandler> where
THandler: Send,
TInEvent: Send,
TOutEvent: Send,
TTrans: Send,
<TTrans as Transport>::Error: Send,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::Error: Send,
<TTrans as Transport>::Listener: 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>