proxmox-rest-server: allow to catch SIGINT and SIGHUP separately

And make ServerState private.
This commit is contained in:
Dietmar Maurer 2021-09-30 08:03:34 +02:00
parent 11148dce43
commit fd1b65cc3c
4 changed files with 20 additions and 17 deletions

View File

@ -9,18 +9,18 @@ use tokio::signal::unix::{signal, SignalKind};
use pbs_tools::broadcast_future::BroadcastData;
#[derive(PartialEq, Copy, Clone, Debug)]
pub enum ServerMode {
enum ServerMode {
Normal,
Shutdown,
}
pub struct ServerState {
pub mode: ServerMode,
pub shutdown_listeners: BroadcastData<()>,
pub last_worker_listeners: BroadcastData<()>,
pub worker_count: usize,
pub internal_task_count: usize,
pub reload_request: bool,
struct ServerState {
mode: ServerMode,
shutdown_listeners: BroadcastData<()>,
last_worker_listeners: BroadcastData<()>,
worker_count: usize,
internal_task_count: usize,
reload_request: bool,
}
lazy_static! {
@ -34,12 +34,8 @@ lazy_static! {
});
}
/// Listen to ``SIGINT`` and ``SIGHUP`` signals
///
/// * ``SIGINT``: start server shutdown
///
/// * ``SIGHUP``: start server reload
pub fn catch_shutdown_and_reload_signals() -> Result<(), Error> {
/// Listen to ``SIGINT`` for server shutdown
pub fn catch_shutdown_signal() -> Result<(), Error> {
let mut stream = signal(SignalKind::interrupt())?;
@ -56,6 +52,12 @@ pub fn catch_shutdown_and_reload_signals() -> Result<(), Error> {
tokio::spawn(task.map(|_| ()));
Ok(())
}
/// Listen to ``SIGHUP`` for server reload
pub fn catch_reload_signal() -> Result<(), Error> {
let mut stream = signal(SignalKind::hangup())?;
let future = async move {

View File

@ -127,7 +127,8 @@ async fn run() -> Result<(), Error> {
let init_result: Result<(), Error> = try_block!({
proxmox_rest_server::register_task_control_commands(&mut commando_sock)?;
commando_sock.spawn()?;
proxmox_rest_server::catch_shutdown_and_reload_signals()?;
proxmox_rest_server::catch_shutdown_signal()?;
proxmox_rest_server::catch_reload_signal()?;
Ok(())
});

View File

@ -270,7 +270,8 @@ async fn run() -> Result<(), Error> {
let init_result: Result<(), Error> = try_block!({
proxmox_rest_server::register_task_control_commands(&mut commando_sock)?;
commando_sock.spawn()?;
proxmox_rest_server::catch_shutdown_and_reload_signals()?;
proxmox_rest_server::catch_shutdown_signal()?;
proxmox_rest_server::catch_reload_signal()?;
Ok(())
});

View File

@ -53,7 +53,6 @@ fn worker_task_abort() -> Result<(), Error> {
let init_result: Result<(), Error> = try_block!({
proxmox_rest_server::register_task_control_commands(&mut commando_sock)?;
proxmox_rest_server::catch_shutdown_and_reload_signals()?;
Ok(())
});