Something went wrong. Try again.
Something went wrong. Try again.
1.2 kB · 45 lines
Rust
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546use color_eyre::eyre;use tokio::net::TcpListener;use tracing::info;
use crate::config::Config;use crate::device_storage::DeviceStorage;use crate::tcp::receive_device_update_events;use crate::tcp::registration::receive_register_events;use crate::web::app;
pub mod device_storage;pub mod tcp;pub mod time;pub mod web;
pub mod config;
#[derive(Clone)]pub struct AppState { pub device_storage: DeviceStorage, pub device_change_events: tokio::sync::broadcast::Sender<String>,}
pub async fn run_tcp(state: AppState, config: &Config) -> eyre::Result<()> { info!("Starting TCP Server - port {}", config.tcp_port); let listener = TcpListener::bind(format!("0.0.0.0:{}", config.tcp_port)).await?;
tokio::try_join!( receive_register_events(listener, state.clone()), receive_device_update_events(state) )?;
Ok(())}
pub async fn run_http(state: AppState, config: &Config) -> eyre::Result<()> { let app = app(state, config).await?;
info!("Starting Web Server - port {}", config.web_port); let listener = TcpListener::bind(format!("0.0.0.0:{}", config.web_port)).await?;
axum::serve(listener, app).await?;
Ok(())}