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}