|
@@ -1,18 +1,24 @@
|
|
|
mod sensors;
|
|
|
mod netspeed;
|
|
|
mod comm;
|
|
|
+mod config;
|
|
|
|
|
|
use comm::{Channel, Message};
|
|
|
+use config::Config;
|
|
|
use std::collections::HashMap;
|
|
|
use std::io;
|
|
|
+use std::sync::Arc;
|
|
|
use std::sync::mpsc;
|
|
|
use std::thread;
|
|
|
|
|
|
fn main() {
|
|
|
+ let cfg = config::load("./panel.toml");
|
|
|
+ let cfg = Arc::new(cfg);
|
|
|
+
|
|
|
let (tx, rx) = mpsc::channel::<Message>();
|
|
|
- make_thread(&tx, stdin);
|
|
|
- make_thread(&tx, sensors::sensors);
|
|
|
- make_thread(&tx, netspeed::netspeed);
|
|
|
+ make_thread(&tx, &cfg, stdin);
|
|
|
+ make_thread(&tx, &cfg, sensors::sensors);
|
|
|
+ make_thread(&tx, &cfg, netspeed::netspeed);
|
|
|
|
|
|
let mut data = HashMap::new();
|
|
|
|
|
@@ -29,15 +35,16 @@ fn main() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-fn make_thread(tx: &Channel, func: fn(&Channel) -> ()) {
|
|
|
+fn make_thread(tx: &Channel, cfg: &Arc<Config>, func: fn(&Channel, &Config) -> ()) {
|
|
|
let thread_tx = tx.clone();
|
|
|
+ let thread_cfg = cfg.clone();
|
|
|
thread::spawn(move || {
|
|
|
- func(&thread_tx);
|
|
|
+ func(&thread_tx, &thread_cfg);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
|
|
|
-fn stdin(tx: &Channel) {
|
|
|
+fn stdin(tx: &Channel, _cfg: &Config) {
|
|
|
let mut line = String::new();
|
|
|
loop {
|
|
|
io::stdin().read_line(&mut line).ok().expect("Failed to read line");
|