LCOV - code coverage report
Current view: top level - libs/utils/src - signals.rs (source / functions) Coverage Total Hit
Test: 8ac049b474321fdc72ddcb56d7165153a1a900e8.info Lines: 68.8 % 16 11
Test Date: 2023-09-06 10:18:01 Functions: 75.0 % 4 3

            Line data    Source code
       1              : use signal_hook::iterator::Signals;
       2              : 
       3              : pub use signal_hook::consts::{signal::*, TERM_SIGNALS};
       4              : 
       5              : pub enum Signal {
       6              :     Quit,
       7              :     Interrupt,
       8              :     Terminate,
       9              : }
      10              : 
      11              : impl Signal {
      12          940 :     pub fn name(&self) -> &'static str {
      13          940 :         match self {
      14          424 :             Signal::Quit => "SIGQUIT",
      15            0 :             Signal::Interrupt => "SIGINT",
      16          516 :             Signal::Terminate => "SIGTERM",
      17              :         }
      18          940 :     }
      19              : }
      20              : 
      21              : pub struct ShutdownSignals;
      22              : 
      23              : impl ShutdownSignals {
      24          947 :     pub fn handle(mut handler: impl FnMut(Signal) -> anyhow::Result<()>) -> anyhow::Result<()> {
      25          947 :         for raw_signal in Signals::new(TERM_SIGNALS)?.into_iter() {
      26          940 :             let signal = match raw_signal {
      27            0 :                 SIGINT => Signal::Interrupt,
      28          516 :                 SIGTERM => Signal::Terminate,
      29          424 :                 SIGQUIT => Signal::Quit,
      30            0 :                 other => panic!("unknown signal: {}", other),
      31              :             };
      32              : 
      33          940 :             handler(signal)?;
      34              :         }
      35              : 
      36            0 :         Ok(())
      37            0 :     }
      38              : }
        

Generated by: LCOV version 2.1-beta