This commit is contained in:
2022-10-09 22:12:45 +02:00
parent 4273640cd3
commit 1f05c6dc3d
6 changed files with 446 additions and 233 deletions

View File

@ -1,4 +1,5 @@
mod collector;
mod persistence;
mod tasks;
use clap::Parser;
@ -7,6 +8,7 @@ use common::{BulbMap, ClientMessage, ServerMessage};
use futures_util::{SinkExt, StreamExt};
use lighter_manager::{manager::BulbsConfig, mqtt_conf::MqttConfig};
use log::LevelFilter;
use persistence::Persistence;
use serde::Deserialize;
use std::convert::Infallible;
use std::net::SocketAddr;
@ -46,6 +48,8 @@ pub struct Config {
collectors: CollectorConfig,
persistence_dir: Option<PathBuf>,
#[serde(flatten)]
bulbs: BulbsConfig,
@ -55,6 +59,7 @@ pub struct Config {
pub struct State {
config: Config,
persistence: Persistence,
client_message: broadcast::Sender<ClientRequest>,
server_message: broadcast::Sender<ServerMessage>,
}
@ -85,9 +90,15 @@ async fn main() {
let (client_message, _) = broadcast::channel(100);
let state = State {
config,
client_message,
server_message,
persistence: match &config.persistence_dir {
Some(path) => Persistence::new_persistence(path.to_owned())
.await
.expect("Failed to open persistence dir"),
None => Persistence::new().await,
},
config,
};
let state = Box::leak(Box::new(state));