aboutsummaryrefslogtreecommitdiffstats
path: root/src/api/dashboard/mod.rs
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-11-05 02:14:44 +0100
committertv <tv@krebsco.de>2026-11-05 02:14:44 +0100
commitd510e3a7b223b75b5187470432f909665b6cd967 (patch)
treedce84899b17f8c962228843efdbfe95ccaed6a5c /src/api/dashboard/mod.rs
parent3531e97f1b1d2894538e43b453dc0b5a925c3910 (diff)
dashboard: swarm-wide epoch shine
Diffstat (limited to 'src/api/dashboard/mod.rs')
-rw-r--r--src/api/dashboard/mod.rs11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/api/dashboard/mod.rs b/src/api/dashboard/mod.rs
index 6682cbd..c82ce76 100644
--- a/src/api/dashboard/mod.rs
+++ b/src/api/dashboard/mod.rs
@@ -340,15 +340,22 @@ async fn build(state: &AppState, graph: &Graph, live: bool) -> JsonValue {
.into_iter()
.filter(|(_, age, _)| *age <= LINKS_KEPT_FOR)
.collect();
+ // With each its epoch: the page shows who entered a new one.
+ let epochs = state.links.epochs();
+ let epoch_json = |epoch: Option<crate::transport::Epoch>| {
+ epoch.map(|epoch| json!(crate::document::replica::EpochRecord::from(epoch)))
+ };
let mut measured = Map::new();
measured.insert(
local.to_owned(),
- json!({ "secsAgo": 0, "links": links_json(&own) }),
+ json!({ "secsAgo": 0, "links": links_json(&own),
+ "epoch": epoch_json(Some(state.local_epoch())) }),
);
for (member, age, member_links) in &replies {
measured.insert(
member.clone(),
- json!({ "secsAgo": age.as_secs(), "links": links_json(member_links) }),
+ json!({ "secsAgo": age.as_secs(), "links": links_json(member_links),
+ "epoch": epoch_json(epochs.get(member).copied()) }),
);
}
let clocks = clocks::swarm(