From 11091289776ef6941f8c6558991484c7fcfa1069 Mon Sep 17 00:00:00 2001 From: Scott Lawrence Date: Sat, 29 Jun 2024 00:19:31 -0700 Subject: Periodic updating of the state --- src/main.rs | 36 +++++++++++++++++++++++++++++++++++- varanus | 2 ++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100755 varanus 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,14 +11,21 @@ struct Cli { daemon: bool, #[arg(short='v', long)] verbose: bool, + #[arg(short='D', long, default_value="10")] + delay: u64, } #[derive(Serialize, Deserialize)] 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 { } } + diff --git a/varanus b/varanus new file mode 100755 index 0000000..0bd883e --- /dev/null +++ b/varanus @@ -0,0 +1,2 @@ +#!/bin/sh +exec cargo run -q -- $* -- cgit v1.2.3-54-g00ecf