tuwunel_admin/query/peer_status/
snapshot.rs1use futures::StreamExt;
2use ruma::OwnedServerName;
3use tokio::time::Instant;
4use tuwunel_core::{Result, utils::time};
5
6use crate::admin_command;
7
8#[admin_command]
9pub(super) async fn peer_status_snapshot(&self, server_name: Option<OwnedServerName>) -> Result {
10 writeln!(self, "| Server Name | Bucket Start | Classification |").await?;
11 writeln!(self, "| ----------- | ------------ | -------------- |").await?;
12
13 let timer = Instant::now();
14 let filter = server_name.as_deref();
15 let mut snapshot = self.services.federation.peer_snapshot().boxed();
16 while let Some((server, bucket_start, classification)) = snapshot.next().await {
17 if filter.is_some_and(|f| server != f) {
18 continue;
19 }
20
21 let start = time::format(bucket_start, "%+");
22 write!(self, "| {server} | {start} | {classification:?} |\n").await?;
23 }
24
25 let query_time = timer.elapsed();
26 write!(self, "\nQuery completed in {query_time:?}.").await
27}