1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use crate::db::*;
use crate::reading::*;
use crate::threading;
use crate::Result;
use bus::Bus;
use log::info;
use std::sync::{Arc, Mutex};
pub fn spawn(bus: &mut Bus<Message>, db: Arc<Mutex<Db>>) -> Result<()> {
info!("Spawning message receiver…");
let rx = bus.add_rx();
threading::spawn("my-iot::receiver", move || {
for message in rx {
info!("{}: {:?}", &message.reading.sensor, &message.reading.value);
if message.type_ == Type::Actual {
db.lock().unwrap().insert_reading(&message.reading).unwrap();
}
}
unreachable!();
})?;
Ok(())
}