pub struct NodeStatus {Show 19 fields
pub peer_id: PeerId,
pub local_addr: SocketAddr,
pub external_addrs: Vec<SocketAddr>,
pub nat_type: NatType,
pub can_receive_direct: bool,
pub has_public_ip: bool,
pub connected_peers: usize,
pub active_connections: usize,
pub pending_connections: usize,
pub direct_connections: u64,
pub relayed_connections: u64,
pub hole_punch_success_rate: f64,
pub is_relaying: bool,
pub relay_sessions: usize,
pub relay_bytes_forwarded: u64,
pub is_coordinating: bool,
pub coordination_sessions: usize,
pub avg_rtt: Duration,
pub uptime: Duration,
}Expand description
Comprehensive node status snapshot
This struct provides a complete view of the node’s current state, including identity, connectivity, NAT status, relay status, and performance.
§Status Categories
- Identity: peer_id, local_addr, external_addrs
- NAT Status: nat_type, can_receive_direct, has_public_ip
- Connections: connected_peers, active_connections, pending_connections
- NAT Traversal: direct_connections, relayed_connections, hole_punch_success_rate
- Relay: is_relaying, relay_sessions, relay_bytes_forwarded
- Coordinator: is_coordinating, coordination_sessions
- Performance: avg_rtt, uptime
Fields§
§peer_id: PeerIdThis node’s peer ID (derived from public key)
local_addr: SocketAddrLocal bind address
external_addrs: Vec<SocketAddr>All discovered external addresses
These are addresses as seen by other peers. Multiple addresses may be discovered when behind NAT or with multiple interfaces.
nat_type: NatTypeDetected NAT type
can_receive_direct: boolWhether this node can receive direct connections
true if the node has a public IP or is behind a traversable NAT.
has_public_ip: boolWhether this node has a public IP
true if local_addr matches an external_addr (no NAT).
connected_peers: usizeNumber of connected peers
active_connections: usizeNumber of active connections (may differ from peers if multiplexed)
pending_connections: usizeNumber of pending connection attempts
direct_connections: u64Total successful direct connections (no relay)
relayed_connections: u64Total connections that required relay
hole_punch_success_rate: f64Hole punch success rate (0.0 - 1.0)
Calculated from NAT traversal attempts vs successes.
is_relaying: boolWhether this node is currently acting as a relay for others
true if this node has public connectivity and is forwarding
traffic for peers behind restrictive NATs.
relay_sessions: usizeNumber of active relay sessions
relay_bytes_forwarded: u64Total bytes forwarded as relay
is_coordinating: boolWhether this node is coordinating NAT traversal
true if this node is helping peers coordinate hole punching.
All nodes with public connectivity act as coordinators.
coordination_sessions: usizeNumber of active coordination sessions
avg_rtt: DurationAverage round-trip time across all connections
uptime: DurationTime since node started
Implementations§
Source§impl NodeStatus
impl NodeStatus
Sourcepub fn is_connected(&self) -> bool
pub fn is_connected(&self) -> bool
Check if node has any connectivity
Sourcepub fn can_help_traversal(&self) -> bool
pub fn can_help_traversal(&self) -> bool
Check if node can help with NAT traversal
Returns true if the node has public connectivity and can act as coordinator/relay for other peers.
Sourcepub fn total_connections(&self) -> u64
pub fn total_connections(&self) -> u64
Get the total number of connections (direct + relayed)
Sourcepub fn direct_rate(&self) -> f64
pub fn direct_rate(&self) -> f64
Get the direct connection rate (0.0 - 1.0)
Higher is better - indicates more direct connections vs relayed.
Trait Implementations§
Source§impl Clone for NodeStatus
impl Clone for NodeStatus
Source§fn clone(&self) -> NodeStatus
fn clone(&self) -> NodeStatus
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more