tuwunel_admin/debug/
runtime_interval.rs1#[cfg(tokio_unstable)]
2use futures::TryStreamExt;
3use tuwunel_core::Result;
4#[cfg(tokio_unstable)]
5use tuwunel_core::utils::stream::IterStream;
6
7use crate::admin_command;
8
9#[cfg(tokio_unstable)]
10#[admin_command]
11pub(super) async fn runtime_interval(&self) -> Result {
12 let metrics = &self.services.server.metrics;
13
14 let Some(interval) = metrics.runtime_interval() else {
15 return self
16 .write_str("Runtime metrics are not available.")
17 .await;
18 };
19
20 writeln!(self, "```rs\n{interval:#?}\nschedule_latency_histogram: [").await?;
21
22 metrics
23 .sched_histogram_interval()
24 .into_iter()
25 .flatten()
26 .try_stream()
27 .try_for_each(|(range, count)| writeln!(self, " {range:?}: {count},"))
28 .await?;
29
30 self.write_str("]\n```").await
31}
32
33#[cfg(not(tokio_unstable))]
34#[admin_command]
35pub(super) async fn runtime_interval(&self) -> Result {
36 self.write_str("Runtime metrics require building with `tokio_unstable`.")
37 .await
38}