Enum swarm_nl::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
We dialed the node.
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.
Listener
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
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl Debug for ConnectedPoint
impl Debug for ConnectedPoint
§impl Hash for ConnectedPoint
impl Hash for ConnectedPoint
§impl PartialEq for ConnectedPoint
impl PartialEq for ConnectedPoint
§fn eq(&self, other: &ConnectedPoint) -> bool
fn eq(&self, other: &ConnectedPoint) -> bool
self
and other
values to be equal, and is used
by ==
.impl Eq for ConnectedPoint
impl StructuralPartialEq for ConnectedPoint
Auto Trait Implementations§
impl Freeze for ConnectedPoint
impl RefUnwindSafe for ConnectedPoint
impl Send for ConnectedPoint
impl Sync for ConnectedPoint
impl Unpin for ConnectedPoint
impl UnwindSafe for ConnectedPoint
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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