diff --git a/wg-event-gen/src/main.rs b/wg-event-gen/src/main.rs index c979a28..37e5765 100644 --- a/wg-event-gen/src/main.rs +++ b/wg-event-gen/src/main.rs @@ -6,9 +6,30 @@ extern crate derive_builder; mod controller; mod model; +mod opts; -use controller::Userspace; +use controller::{Userspace}; +use model::WireguardController; +use opts::Opts; +use std::io; +use structopt::StructOpt; +use std::thread::sleep; +use std::time::{Duration,Instant}; -fn main() { - let controller = Userspace::new(""); +fn main() -> io::Result<()> { + let opts = Opts::from_args(); + let mut controller: Box = Box::new(Userspace::new(opts.socket.clone())); + let interval = Duration::from_millis(opts.poll); + println!("Polling {} every {:?}", opts.socket.to_str().unwrap(), interval); + loop { + let now = Instant::now(); + let peers = controller.peers()?; + for peer in peers { + dbg!(peer?); + } + let pause = interval - now.elapsed(); + dbg!(pause); + sleep(if pause > interval/2 { pause } else {interval}); + } + Ok(()) }