Documentation
use clap::Parser;
use color_eyre::Result;
use common_x::signal::waiting_for_shutdown;
use eldegoss::{config::Config, eldegoss::Eldegoss, util::Args};
use tracing::info;

#[tokio::main]
async fn main() -> Result<()> {
    common_x::log::init_log_filter("info,quinn=info");
    let args = Args::parse();
    let config: Config = common_x::configure::file_config(&args.config)?;
    info!("Loaded config {config:?}");

    let eldegoss = Eldegoss::serve(config).await?;

    let mut interval = tokio::time::interval(std::time::Duration::from_secs(2));
    loop {
        tokio::select! {
            Ok(msg) = eldegoss.recv() => {
                info!("Received {msg:?}");
            }
            _ = interval.tick() => {
                eldegoss.send(vec![]).await.ok();
            }
            _ = waiting_for_shutdown() => {
                break;
            }
        }
    }
    Ok(())
}