use std::{borrow::Cow, cmp::Ordering, time::Instant};
use timer_deque_rs::
{
AbsoluteTime, timer_portable::
{
FdTimerCom, TimerExpMode, TimerFlags, TimerType, timer::{FdTimerRead, TimerFd}
}
};
fn main()
{
let timer =
TimerFd::new(Cow::Borrowed("test"), TimerType::CLOCK_REALTIME,
TimerFlags::empty()).unwrap();
let s = Instant::now();
let abs_time = AbsoluteTime::now().add_sec(3);
let exp_time =
TimerExpMode::<AbsoluteTime>::new_oneshot(abs_time);
let res = timer.get_timer().set_time(exp_time);
println!("timer was set: '{}'", exp_time);
assert_eq!(res.is_ok(), true, "{}", res.err().unwrap());
let ovf = timer.get_timer().read().unwrap().unwrap();
let now_abs = AbsoluteTime::now();
let e = s.elapsed();
assert_eq!(ovf, 1);
assert_eq!(abs_time.seconds_cmp(&now_abs) == Ordering::Equal, true);
println!("elapsed: {:?}, now: {}, set: {}", e, now_abs, abs_time);
assert_eq!((e.as_millis() <= 3100), true);
println!("Success");
return;
}