From 6b046a5c18d670c3097b8563c191a2dc06ce1179 Mon Sep 17 00:00:00 2001 From: tv Date: Sat, 24 Oct 2026 04:50:16 +0200 Subject: record RTT from keepalive messages --- src/api/peers.rs | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/api/peers.rs') diff --git a/src/api/peers.rs b/src/api/peers.rs index d381395..3893e0f 100644 --- a/src/api/peers.rs +++ b/src/api/peers.rs @@ -62,6 +62,9 @@ pub(crate) struct PeerStatus { heads: Option, /// We keep it alive and sync with it on our own; other peers we only answer. neighbour: bool, + /// Smoothed round-trip time in milliseconds, from PING/PONG and HELLO/HELLO_REPLY; + /// absent until measured. + rtt_ms: Option, } #[derive(Debug, Serialize, ToSchema)] @@ -109,6 +112,10 @@ pub(crate) async fn list_peers( for (public_key, peer_state_mutex) in snapshot { let neighbour = crate::swarm::topology::is_neighbour(&state, &public_key); + let rtt_ms = state + .lock_rtt() + .get(&public_key) + .map(|rtt| rtt.as_secs_f64() * 1000.0); let ps = peer_state_mutex.lock().await; let (status, dormant_for_secs) = match ps.liveness { @@ -133,6 +140,7 @@ pub(crate) async fn list_peers( same_epoch: ps.epoch.map(|epoch| epoch == local_epoch), heads: ps.reported_heads, neighbour, + rtt_ms, }); } -- cgit v1.3.1