Skip to main content

tuwunel_admin/debug/
runtime_interval.rs

1#[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}