Enum p2p::ConnectedPoint
[−]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
address: Multiaddr
Multiaddress that was successfully dialed.
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
local_addr: Multiaddr
Local connection address.
send_back_addr: Multiaddr
Address used to send back data to the remote.
We received the node.
Implementations
impl ConnectedPoint
impl ConnectedPoint
pub fn to_endpoint(&self) -> Endpoint
pub fn to_endpoint(&self) -> Endpoint
Turns the ConnectedPoint
into the corresponding Endpoint
.
pub fn is_listener(&self) -> bool
pub fn is_listener(&self) -> bool
Returns true if we are Listener
.
pub fn is_relayed(&self) -> bool
pub fn is_relayed(&self) -> bool
Returns true if the connection is relayed.
pub 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.
pub 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
impl Clone for ConnectedPoint
impl Clone for ConnectedPoint
fn clone(&self) -> ConnectedPoint
fn clone(&self) -> ConnectedPoint
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
impl Debug for ConnectedPoint
impl Debug for ConnectedPoint
impl Hash for ConnectedPoint
impl Hash for ConnectedPoint
impl PartialEq<ConnectedPoint> for ConnectedPoint
impl PartialEq<ConnectedPoint> for ConnectedPoint
fn eq(&self, other: &ConnectedPoint) -> bool
fn eq(&self, other: &ConnectedPoint) -> bool
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
fn ne(&self, other: &ConnectedPoint) -> bool
fn ne(&self, other: &ConnectedPoint) -> bool
This method tests for !=
.
impl Eq for ConnectedPoint
impl StructuralEq for ConnectedPoint
impl StructuralPartialEq for ConnectedPoint
Auto Trait Implementations
impl RefUnwindSafe for ConnectedPoint
impl Send for ConnectedPoint
impl Sync for ConnectedPoint
impl Unpin for ConnectedPoint
impl UnwindSafe for ConnectedPoint
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more