pub struct NodeStatus {Show 28 fields
pub peer_id: PeerId,
pub local_addr: SocketAddr,
pub external_addrs: Vec<SocketAddr>,
pub nat_type: NatType,
pub can_receive_direct: bool,
pub direct_reachability_scope: Option<ReachabilityScope>,
pub has_global_address: bool,
pub port_mapping_active: bool,
pub port_mapping_addr: Option<SocketAddr>,
pub mdns_browsing: bool,
pub mdns_advertising: bool,
pub mdns_discovered_peers: usize,
pub relay_service_enabled: bool,
pub coordinator_service_enabled: bool,
pub bootstrap_service_enabled: 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 consolidated snapshot of the node’s current state, including identity, connectivity, NAT status, relay/coordinator hints, and performance.
§Status Categories
- Identity: peer_id, local_addr, external_addrs
- NAT Status: nat_type, can_receive_direct, direct_reachability_scope, has_global_address
- Connections: connected_peers, active_connections, pending_connections
- NAT Traversal: direct_connections, relayed_connections, hole_punch_success_rate
- Assist Services: relay_service_enabled, coordinator_service_enabled, bootstrap_service_enabled
- Relay Activity: is_relaying, relay_sessions, relay_bytes_forwarded
- Coordinator Activity: 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: NatTypeBest-effort NAT behavior hint.
This is observational telemetry derived from native QUIC reachability outcomes and address observations, not authoritative NAT classification.
can_receive_direct: boolWhether this node can receive direct connections
true only after this node has peer-verified evidence that another
node reached it directly without coordinator or relay assistance.
direct_reachability_scope: Option<ReachabilityScope>Broadest scope in which direct inbound reachability has been verified.
has_global_address: boolWhether this node has a globally routable address candidate.
This is an address property, not proof of reachability.
port_mapping_active: boolWhether best-effort router port mapping is currently active.
port_mapping_addr: Option<SocketAddr>The currently mapped public address, if router port mapping is active.
mdns_browsing: boolWhether first-party mDNS browsing is currently active.
mdns_advertising: boolWhether first-party mDNS advertisement is currently active.
mdns_discovered_peers: usizeNumber of currently eligible peers surfaced by first-party mDNS.
relay_service_enabled: boolWhether this node offers relay service as a capability hint to peers.
This is a local policy/configuration signal. Remote peers still decide whether this node is actually useful for relay service.
coordinator_service_enabled: boolWhether this node offers coordinator capability as a hint to peers.
This is a capability advertisement, not proof of current reachability or performance.
bootstrap_service_enabled: boolWhether this node offers bootstrap/known-peer assist capability.
Peers may treat this node as one discovery/bootstrap input among many.
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.
This tracks observed runtime activity, not merely whether the node is willing to offer relay service.
relay_sessions: usizeNumber of active relay sessions.
Currently reported conservatively; this is not yet a complete runtime metric.
relay_bytes_forwarded: u64Total bytes forwarded as relay
is_coordinating: boolWhether this node is coordinating NAT traversal.
This is a best-effort signal derived from observed coordination activity in the current process lifetime, not merely whether the node advertises coordinator capability.
coordination_sessions: usizeNumber of active coordination sessions.
This is currently a best-effort cumulative proxy derived from runtime coordination statistics rather than an authoritative live in-flight count.
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 currently participates in the assist plane or has peer-verified direct reachability.
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 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more