docs: signals

pull/7/head
prplV 2024-11-13 13:24:21 +03:00
parent e5437fb877
commit a03fbc41b0
2 changed files with 47 additions and 5 deletions

View File

@ -9,6 +9,19 @@ use tokio::{
type SendersVec = Arc<Vec<Arc<mpsc::Sender<u8>>>>; type SendersVec = Arc<Vec<Arc<mpsc::Sender<u8>>>>;
/// # Fn set_valid_destructor
/// ## for initializing process of unstoppable grubbing metrics.
///
/// *input* : `Result<()>`
///
/// *output* : `Err` if it cant create signals listeners | `Ok` on returning Monitor
///
/// *initiator* : main thread
///
/// *managing* : `Arc<Vec<Arc<mpsc::Sender<u8>>>>`
///
/// *depends on* : Sig, Signals
///
pub async fn set_valid_destructor(senders: SendersVec) -> Result<(), CustomError> { pub async fn set_valid_destructor(senders: SendersVec) -> Result<(), CustomError> {
let (mut int, mut term, mut stop) = ( let (mut int, mut term, mut stop) = (
Sig::new(Signals::Sigint, senders.clone()), Sig::new(Signals::Sigint, senders.clone()),
@ -23,16 +36,30 @@ pub async fn set_valid_destructor(senders: SendersVec) -> Result<(), CustomError
} }
Ok(()) Ok(())
} }
/// # Enum Signals
/// ## for instancing each managed system signals (such as SIGINT)
///
/// > (element needed in Sig constructor's signature)
///
/// *depends on* : -
enum Signals { enum Signals {
Sigint, Sigint,
Sigterm, Sigterm,
Sigstop, Sigstop,
} }
/// # Struct Signals
/// ## for instancing each managed system signals (such as SIGINT)
///
/// > (needed to construct system signals listener)
///
/// *depends on* : Signals
struct Sig { struct Sig {
signal: Signal, signal: Signal,
sig_type: Signals, sig_type: Signals,
senders: SendersVec, senders: SendersVec,
} }
/// ## default Sig's constructor
impl Sig { impl Sig {
fn new(signal_type: Signals, sends: SendersVec) -> Self { fn new(signal_type: Signals, sends: SendersVec) -> Self {
Sig { Sig {
@ -42,6 +69,9 @@ impl Sig {
} }
} }
} }
/// ## trait Display realization for returning String-name of signal
///
/// > (needed in logs)
impl std::fmt::Display for Signals { impl std::fmt::Display for Signals {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match self { match self {
@ -51,6 +81,7 @@ impl std::fmt::Display for Signals {
} }
} }
} }
/// ## associated func to init signals listener
impl Signals { impl Signals {
fn get_signal(&self) -> io::Result<Signal> { fn get_signal(&self) -> io::Result<Signal> {
match self { match self {
@ -60,9 +91,20 @@ impl Signals {
} }
} }
} }
/// # Trait SigPostProcessing
/// ## to handle post-processing jobs after getting system signal
///
/// ## > (needed in signals post-processing)
///
trait SigPostProcessing { trait SigPostProcessing {
async fn post_processing(&mut self) -> io::Result<()>; async fn post_processing(&mut self) -> io::Result<()>;
} }
/// # Trait SigPostProcessing realization for Sig struct
/// ## to deinitialize Monitor correctly after getting signal
///
/// ## > (needed in signals post-processing)
///
impl SigPostProcessing for Sig { impl SigPostProcessing for Sig {
async fn post_processing(&mut self) -> io::Result<()> { async fn post_processing(&mut self) -> io::Result<()> {
// manipulations ... // manipulations ...

View File

@ -17,15 +17,15 @@ use crate::utils::get_container_id;
/// # Fn init_metrics_grubber /// # Fn init_metrics_grubber
/// ## for initializing process of unstoppable grubbing metrics. /// ## for initializing process of unstoppable grubbing metrics.
/// ///
/// `input` : vec of processes /// *input* : `Result<()>`
/// ///
/// `output` : Err if it cant create grubbers | Ok on finish /// *output* : `Err` if it cant create grubbers | `Ok` on finish
/// ///
/// `initiator` : main thread /// *initiator* : main thread
/// ///
/// `managing` : object of unix-socket reader /// *managing* : object of unix-socket reader
/// ///
/// `depends on` : network activity /// *depends on* : network activity
/// ///
pub async fn init_metrics_grubber() { pub async fn init_metrics_grubber() {
let mut system = System::new(); let mut system = System::new();