Enum libp2p_core::connection::ConnectedPoint
source · pub enum ConnectedPoint {
Dialer {
address: Multiaddr,
role_override: Endpoint,
},
Listener {
local_addr: Multiaddr,
send_back_addr: Multiaddr,
},
}
Expand description
The endpoint roles associated with an established peer-to-peer connection.
Variants§
Dialer
Fields
role_override: Endpoint
Whether the role of the local node on the connection should be overriden. I.e. whether the local node should act as a listener on the outgoing connection.
This option is needed for NAT and firewall hole punching.
-
Endpoint::Dialer
represents the default non-overriding option. -
Endpoint::Listener
represents the overriding option. Realization depends on the transport protocol. E.g. in the case of TCP, both endpoints dial each other, resulting in a simultaneous open TCP connection. On this new connection both endpoints assume to be the dialer of the connection. This is problematic during the connection upgrade process where an upgrade assumes one side to be the listener. With the help of this option, both peers can negotiate the roles (dialer and listener) for the new connection ahead of time, through some external channel, e.g. the DCUtR protocol, and thus have one peer dial the other and upgrade the connection as a dialer and one peer dial the other and upgrade the connection as a listener overriding its role.
We dialed the node.
Listener
Fields
We received the node.
Implementations§
source§impl ConnectedPoint
impl ConnectedPoint
sourcepub fn to_endpoint(&self) -> Endpoint
pub fn to_endpoint(&self) -> Endpoint
Turns the ConnectedPoint
into the corresponding Endpoint
.
sourcepub fn is_listener(&self) -> bool
pub fn is_listener(&self) -> bool
Returns true if we are Listener
.
sourcepub fn is_relayed(&self) -> bool
pub fn is_relayed(&self) -> bool
Returns true if the connection is relayed.
sourcepub fn get_remote_address(&self) -> &Multiaddr
pub fn get_remote_address(&self) -> &Multiaddr
Returns the address of the remote stored in this struct.
For Dialer
, this returns address
. For Listener
, this returns send_back_addr
.
Note that the remote node might not be listening on this address and hence the address might not be usable to establish new connections.
sourcepub fn set_remote_address(&mut self, new_address: Multiaddr)
pub fn set_remote_address(&mut self, new_address: Multiaddr)
Modifies the address of the remote stored in this struct.
For Dialer
, this modifies address
. For Listener
, this modifies send_back_addr
.
Trait Implementations§
source§impl Clone for ConnectedPoint
impl Clone for ConnectedPoint
source§fn clone(&self) -> ConnectedPoint
fn clone(&self) -> ConnectedPoint
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for ConnectedPoint
impl Debug for ConnectedPoint
source§impl From<&ConnectedPoint> for Endpoint
impl From<&ConnectedPoint> for Endpoint
source§fn from(endpoint: &ConnectedPoint) -> Endpoint
fn from(endpoint: &ConnectedPoint) -> Endpoint
source§impl From<ConnectedPoint> for Endpoint
impl From<ConnectedPoint> for Endpoint
source§fn from(endpoint: ConnectedPoint) -> Endpoint
fn from(endpoint: ConnectedPoint) -> Endpoint
source§impl From<ConnectedPoint> for PendingPoint
impl From<ConnectedPoint> for PendingPoint
source§fn from(endpoint: ConnectedPoint) -> Self
fn from(endpoint: ConnectedPoint) -> Self
source§impl Hash for ConnectedPoint
impl Hash for ConnectedPoint
source§impl PartialEq<ConnectedPoint> for ConnectedPoint
impl PartialEq<ConnectedPoint> for ConnectedPoint
source§fn eq(&self, other: &ConnectedPoint) -> bool
fn eq(&self, other: &ConnectedPoint) -> bool
self
and other
values to be equal, and is used
by ==
.