summaryrefslogtreecommitdiffstats
path: root/src/api/peers.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/peers.rs')
-rw-r--r--src/api/peers.rs8
1 files changed, 8 insertions, 0 deletions
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<usize>,
/// 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<f64>,
}
#[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,
});
}