ppaass-agent 0.1.35

The agent part of the ppaass application
Documentation
use std::sync::Arc;

use anyhow::Result;
use clap::Parser;
use ppaass_agent::config::AgentServerConfig;
use ppaass_agent::log;
use ppaass_agent::server::AgentServer;
use tokio::runtime::Builder;

#[global_allocator]
static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc;

const AGENT_SERVER_RUNTIME_NAME: &str = "AGENT-SERVER";

fn main() -> Result<()> {
    let config = Arc::new(AgentServerConfig::parse());
    let _log_guard = log::init_log(config.clone())?;
    let agent_server = AgentServer::new(config.clone())?;
    let runtime = Builder::new_multi_thread()
        .enable_all()
        .thread_name(AGENT_SERVER_RUNTIME_NAME)
        .worker_threads(config.worker_thread_number())
        .build()?;
    runtime.block_on(async move {
        let (_server_command_tx, mut server_event_rx) = agent_server.start();
        while let Some(server_event) = server_event_rx.recv().await {
            println!("{server_event:?}")
        }
    });
    Ok(())
}