Struct libp2p::core::Network [−][src]
pub struct Network<TTrans, TInEvent, TOutEvent, THandler> where
THandler: IntoConnectionHandler,
TTrans: Transport, { /* fields omitted */ }
Expand description
Implementation of Stream
that handles the nodes.
Implementations
impl<TTrans, TInEvent, TOutEvent, TMuxer, THandler> Network<TTrans, TInEvent, TOutEvent, THandler> where
THandler: IntoConnectionHandler + Send + 'static,
TTrans: Transport + Clone,
TMuxer: StreamMuxer,
<THandler as IntoConnectionHandler>::Handler: ConnectionHandler,
<THandler as IntoConnectionHandler>::Handler: Send,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::OutboundOpenInfo: Send,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::Error: Error,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::Error: Send,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::Substream == SubstreamRef<Arc<TMuxer>>,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::InEvent == TInEvent,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::OutEvent == TOutEvent,
impl<TTrans, TInEvent, TOutEvent, TMuxer, THandler> Network<TTrans, TInEvent, TOutEvent, THandler> where
THandler: IntoConnectionHandler + Send + 'static,
TTrans: Transport + Clone,
TMuxer: StreamMuxer,
<THandler as IntoConnectionHandler>::Handler: ConnectionHandler,
<THandler as IntoConnectionHandler>::Handler: Send,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::OutboundOpenInfo: Send,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::Error: Error,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::Error: Send,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::Substream == SubstreamRef<Arc<TMuxer>>,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::InEvent == TInEvent,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::OutEvent == TOutEvent,
pub fn new(
transport: TTrans,
local_peer_id: PeerId,
config: NetworkConfig
) -> Network<TTrans, TInEvent, TOutEvent, THandler>
pub fn new(
transport: TTrans,
local_peer_id: PeerId,
config: NetworkConfig
) -> Network<TTrans, TInEvent, TOutEvent, THandler>
Creates a new node events stream.
pub fn listen_on(
&mut self,
addr: Multiaddr
) -> Result<ListenerId, TransportError<<TTrans as Transport>::Error>>
pub fn listen_on(
&mut self,
addr: Multiaddr
) -> Result<ListenerId, TransportError<<TTrans as Transport>::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.
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
TInEvent: Send + 'static,
TOutEvent: Send + 'static,
TTrans: Transport<Output = (PeerId, TMuxer)>,
TMuxer: Send + Sync + 'static,
<TTrans as Transport>::Error: Send,
<TTrans as Transport>::Error: 'static,
<TTrans as Transport>::Dial: Send,
<TTrans as Transport>::Dial: 'static,
<TMuxer as StreamMuxer>::OutboundSubstream: Send,
pub fn dial(
&mut self,
address: &Multiaddr,
handler: THandler
) -> Result<ConnectionId, DialError> where
TInEvent: Send + 'static,
TOutEvent: Send + 'static,
TTrans: Transport<Output = (PeerId, TMuxer)>,
TMuxer: Send + Sync + 'static,
<TTrans as Transport>::Error: Send,
<TTrans as Transport>::Error: 'static,
<TTrans as Transport>::Dial: Send,
<TTrans as Transport>::Dial: 'static,
<TMuxer as StreamMuxer>::OutboundSubstream: Send,
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 as Transport>::ListenerUpgrade>,
handler: THandler
) -> Result<ConnectionId, ConnectionLimit> where
TInEvent: Send + 'static,
TOutEvent: Send + 'static,
TTrans: Transport<Output = (PeerId, TMuxer)>,
TMuxer: StreamMuxer + Send + Sync + 'static,
<TMuxer as StreamMuxer>::OutboundSubstream: Send,
<TTrans as Transport>::Error: Send,
<TTrans as Transport>::Error: 'static,
<TTrans as Transport>::ListenerUpgrade: Send,
<TTrans as Transport>::ListenerUpgrade: 'static,
pub fn accept(
&mut self,
connection: IncomingConnection<<TTrans as Transport>::ListenerUpgrade>,
handler: THandler
) -> Result<ConnectionId, ConnectionLimit> where
TInEvent: Send + 'static,
TOutEvent: Send + 'static,
TTrans: Transport<Output = (PeerId, TMuxer)>,
TMuxer: StreamMuxer + Send + Sync + 'static,
<TMuxer as StreamMuxer>::OutboundSubstream: Send,
<TTrans as Transport>::Error: Send,
<TTrans as Transport>::Error: 'static,
<TTrans as Transport>::ListenerUpgrade: Send,
<TTrans as Transport>::ListenerUpgrade: 'static,
Accepts a pending incoming connection obtained via NetworkEvent::IncomingConnection
,
adding it to the Network
s 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 mut self,
cx: &mut Context<'_>
) -> Poll<NetworkEvent<'a, TTrans, TInEvent, TOutEvent, THandler>> where
TInEvent: Send + 'static,
TOutEvent: Send + 'static,
THandler: IntoConnectionHandler + Send + 'static,
TTrans: Transport<Output = (PeerId, TMuxer)>,
TMuxer: Send + Sync + 'static,
<TTrans as Transport>::Error: Send,
<TTrans as Transport>::Error: 'static,
<TTrans as Transport>::Dial: Send,
<TTrans as Transport>::Dial: 'static,
<TTrans as Transport>::ListenerUpgrade: Send,
<TTrans as Transport>::ListenerUpgrade: 'static,
<TMuxer as StreamMuxer>::OutboundSubstream: Send,
<THandler as IntoConnectionHandler>::Handler: ConnectionHandler,
<THandler as IntoConnectionHandler>::Handler: Send,
<THandler as IntoConnectionHandler>::Handler: 'static,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::Error: Error,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::Error: Send,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::Error: 'static,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::Substream == SubstreamRef<Arc<TMuxer>>,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::InEvent == TInEvent,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::OutEvent == TOutEvent,
pub fn poll(
&'a mut self,
cx: &mut Context<'_>
) -> Poll<NetworkEvent<'a, TTrans, TInEvent, TOutEvent, THandler>> where
TInEvent: Send + 'static,
TOutEvent: Send + 'static,
THandler: IntoConnectionHandler + Send + 'static,
TTrans: Transport<Output = (PeerId, TMuxer)>,
TMuxer: Send + Sync + 'static,
<TTrans as Transport>::Error: Send,
<TTrans as Transport>::Error: 'static,
<TTrans as Transport>::Dial: Send,
<TTrans as Transport>::Dial: 'static,
<TTrans as Transport>::ListenerUpgrade: Send,
<TTrans as Transport>::ListenerUpgrade: 'static,
<TMuxer as StreamMuxer>::OutboundSubstream: Send,
<THandler as IntoConnectionHandler>::Handler: ConnectionHandler,
<THandler as IntoConnectionHandler>::Handler: Send,
<THandler as IntoConnectionHandler>::Handler: 'static,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::Error: Error,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::Error: Send,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::Error: 'static,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::Substream == SubstreamRef<Arc<TMuxer>>,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::InEvent == TInEvent,
<<THandler as IntoConnectionHandler>::Handler as ConnectionHandler>::OutEvent == TOutEvent,
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
THandler: IntoConnectionHandler,
TTrans: Transport,
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>