use std::time::Duration; use comrade::service::ServiceManager; fn main() { env_logger::init(); log::info!("Running services example"); // persistent background services let mut s_decay = ServiceManager::new().mode(comrade::service::ServiceMode::Decay); s_decay = s_decay.register( "myservice", Box::new(|_| { let mut c = 0; loop { // ... println!("I am doing something!"); std::thread::sleep(Duration::from_millis(400)); c += 1; if c == 3 { panic!("Oh no!"); } } }), ); let s = s_decay.register( "myservice2", Box::new(|_| { let mut c = 0; loop { // ... println!("I am doing something! 2"); std::thread::sleep(Duration::from_millis(400)); c += 1; if c == 3 { println!("Bye"); break; } } }), ); let st = s.spawn(); st.join().unwrap(); println!("Ended decaying ServiceManager"); // daemon mode let mut s = ServiceManager::new().mode(comrade::service::ServiceMode::Daemon); s = s.register( "myservice", Box::new(|_| { let mut c = 0; loop { // ... println!("I am doing something forever!"); std::thread::sleep(Duration::from_millis(400)); c += 1; if c == 3 { panic!("Oh no!"); } } }), ); let st = s.spawn(); st.join().unwrap(); }