use tokio::runtime::Builder; use tokio::task; use sea_battle_backend::args::Args; use sea_battle_backend::utils::network_utils; use crate::cli_args::cli_args; pub async fn start_server_if_missing() { if !network_utils::is_port_open(cli_args().listen_port()).await { log::info!( "Local server will start on {}...", cli_args().listen_address ); std::thread::spawn(move || { let rt = Builder::new_current_thread().enable_all().build().unwrap(); let local_set = task::LocalSet::new(); rt.block_on(local_set.run_until(async move { sea_battle_backend::server::start_server(Args { listen_address: cli_args().listen_address.clone(), cors: None, }) .await .expect("Failed to run local server!") })); }); } }