diff --git a/crates/net/network/src/manager.rs b/crates/net/network/src/manager.rs index 46af9c3b6b..eca9e5210b 100644 --- a/crates/net/network/src/manager.rs +++ b/crates/net/network/src/manager.rs @@ -664,12 +664,16 @@ where SwarmEvent::PeerAdded(peer_id) => { trace!(target: "net", ?peer_id, "Peer added"); this.event_listeners.send(NetworkEvent::PeerAdded(peer_id)); - this.metrics.tracked_peers.increment(1f64); + this.metrics + .tracked_peers + .set(this.swarm.state().peers().num_known_peers() as f64); } SwarmEvent::PeerRemoved(peer_id) => { trace!(target: "net", ?peer_id, "Peer dropped"); this.event_listeners.send(NetworkEvent::PeerRemoved(peer_id)); - this.metrics.tracked_peers.decrement(1f64); + this.metrics + .tracked_peers + .set(this.swarm.state().peers().num_known_peers() as f64); } SwarmEvent::SessionClosed { peer_id, remote_addr, error } => { let total_active = diff --git a/crates/net/network/src/peers/manager.rs b/crates/net/network/src/peers/manager.rs index 9cc8da4816..791e4eb362 100644 --- a/crates/net/network/src/peers/manager.rs +++ b/crates/net/network/src/peers/manager.rs @@ -163,6 +163,12 @@ impl PeersManager { PeersHandle { manager_tx: self.manager_tx.clone() } } + /// Returns the number of peers in the peer set + #[inline] + pub(crate) fn num_known_peers(&self) -> usize { + self.peers.len() + } + /// Returns an iterator over all peers pub(crate) fn iter_peers(&self) -> impl Iterator + '_ { self.peers.iter().map(|(peer_id, v)| NodeRecord::new(v.addr, *peer_id)) @@ -199,11 +205,13 @@ impl PeersManager { } /// Returns the number of currently active inbound connections. + #[inline] pub(crate) fn num_inbound_connections(&self) -> usize { self.connection_info.num_inbound } /// Returns the number of currently active outbound connections. + #[inline] pub(crate) fn num_outbound_connections(&self) -> usize { self.connection_info.num_outbound }