Mercurial > templog
diff rust/src/paramwaiter.rs @ 593:bf138339d20a rust
fiddling with timeouts and closures
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Tue, 27 Dec 2016 00:51:28 +0800 |
parents | rust/src/configwaiter.rs@03b48ec0bb03 |
children | aff50ee77252 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rust/src/paramwaiter.rs Tue Dec 27 00:51:28 2016 +0800 @@ -0,0 +1,37 @@ +extern crate tokio_core; +extern crate futures; +extern crate rand; + +use std::time::Duration; +use std::io; + +use tokio_core::reactor::Interval; +use tokio_core::reactor::Handle; +use futures::Stream; +use types::*; + +pub struct ParamWaiter { +} + +impl ParamWaiter { + fn step(&mut self) -> Params { + let mut p = Params::defaults(); + let mut rng = rand::thread_rng(); + p.fridge_setpoint = 17.0 + 4.0*rand::random::<f32>(); + p + } + + pub fn new() -> Self { + ParamWaiter {} + } + + pub fn run(handle: &Handle, rate: u64) -> Box<Stream<Item=Params, Error=io::Error>> { + let mut s = ParamWaiter::new(); + + let dur = Duration::from_millis(rate); + Interval::new(dur, handle).unwrap().map(move |()| { + s.step() + }).boxed() + } +} +