Skip to main content

tuwunel_router/
handle.rs

1use std::time::Duration;
2
3use axum_server::Handle;
4
5#[derive(Clone)]
6pub(crate) struct ServerHandle {
7	pub(crate) handle_ip: Handle<std::net::SocketAddr>,
8
9	#[cfg(unix)]
10	pub(crate) handle_unix: Handle<std::os::unix::net::SocketAddr>,
11}
12
13impl ServerHandle {
14	pub(crate) fn new() -> Self {
15		Self {
16			handle_ip: Handle::<std::net::SocketAddr>::new(),
17
18			#[cfg(unix)]
19			handle_unix: Handle::<std::os::unix::net::SocketAddr>::new(),
20		}
21	}
22
23	pub(crate) fn graceful_shutdown(&self, duration: Option<Duration>) {
24		self.handle_ip.graceful_shutdown(duration);
25
26		#[cfg(unix)]
27		self.handle_unix.graceful_shutdown(duration);
28	}
29}