diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.rs | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs index 4086419..d25f128 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,6 @@ -use std::time::SystemTime; +use std::thread::sleep; +use std::time::{Duration,Instant,SystemTime}; +use std::os::unix::net::{UnixStream,UnixListener}; use clap::Parser; use serde::{Serialize,Deserialize}; @@ -9,6 +11,8 @@ struct Cli { daemon: bool, #[arg(short='v', long)] verbose: bool, + #[arg(short='D', long, default_value="10")] + delay: u64, } #[derive(Serialize, Deserialize)] @@ -16,7 +20,12 @@ struct Battery { } #[derive(Serialize, Deserialize)] +struct Power { +} + +#[derive(Serialize, Deserialize)] struct Process { + power: Power, } #[derive(Serialize, Deserialize)] @@ -24,9 +33,34 @@ struct State { asof: SystemTime, } +fn init_state() -> State { + let asof = SystemTime::now(); + return State { + asof: asof, + } +} + +fn update_state(state: &mut State) { + let asof = SystemTime::now(); + state.asof = asof; +} + fn main() { let args = Cli::parse(); if args.daemon { + let start = Instant::now(); + let delay_ms: u64 = args.delay * 1000; + let mut cycle: u64 = 0; + let mut state = init_state(); + loop { + cycle += 1; + sleep(Duration::from_millis(cycle*delay_ms) - start.elapsed()); + if args.verbose { + println!("{:?} elapsed; updating state...", start.elapsed()); + } + update_state(&mut state); + } } else { } } + |
