use siafu::{JobBuilder, Scheduler};
use siafu::scheduler::types::RecurringInterval;
use std::sync::{Arc, Mutex};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut scheduler = Scheduler::new();
let execution_counter = Arc::new(Mutex::new(0));
let job_counter = Arc::clone(&execution_counter);
let simple_recurring_job = JobBuilder::new("simple-recurring-job")
.recurring(RecurringInterval::Secondly(3), None) .max_repeat(3) .add_handler(move || {
let mut count = job_counter.lock().unwrap();
*count += 1;
println!("Simple recurring job executed! (Execution #{})", *count);
})
.build();
println!("Adding simple recurring job...");
scheduler.add_job(simple_recurring_job)?;
println!("Running scheduler...");
scheduler.run_non_blocking()?;
let final_count = *execution_counter.lock().unwrap();
println!("Job executed {} times, exiting.", final_count);
Ok(())
}