view rust/src/configwaiter.rs @ 592:03b48ec0bb03 rust

fridge, types, configwaiter
author Matt Johnston <matt@ucc.asn.au>
date Sat, 24 Dec 2016 00:14:58 +0800
parents
children
line wrap: on
line source

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 ConfigWaiter {
}

impl ConfigWaiter {
    fn step(&mut self) -> ParamHolder {
        let mut p = ParamHolder::new();
        let mut rng = rand::thread_rng();
        p.p.fridge_setpoint = rand::random::<f32>();
        p
    }

    pub fn new() -> Self {
        ConfigWaiter {}
    }

    pub fn run(handle: &Handle, rate: u64) -> Box<Stream<Item=ParamHolder, Error=io::Error>> {
        let mut s = ConfigWaiter::new();

        let dur = Duration::from_millis(rate);
        Interval::new(dur, handle).unwrap().map(move |()| {
            s.step()
        }).boxed()
    }
}