feat: basic crticality

This commit is contained in:
Xory 2025-12-14 23:06:35 +02:00
parent f69929bc73
commit 6b00f0586e
4 changed files with 38 additions and 2 deletions

View file

@ -1,7 +1,10 @@
use skylink::lib::logger::{LogLevel, log};
use futures_util::SinkExt;
use skylink::lib::websockets::websocket_handler;
use skylink::lib::winapi::mark_process_critical;
use skylink::LOG_PATH;
use skylink::WsTx;
use tokio_tungstenite::tungstenite::Message;
use std::sync::Arc;
use tokio::sync::Mutex;
use std::ffi::OsString;
@ -47,7 +50,16 @@ async fn run_app(mut shutdown_rx: tokio::sync::broadcast::Receiver<()>) {
log(LogLevel::Info, LOG_PATH, format!("[main] Skylink version 1.0.0 starting...")).await;
let ws_tx: WsTx = Arc::new(Mutex::new(None));
let ws_tx_for_handler = Arc::clone(&ws_tx);
websocket_handler(ws_tx_for_handler).await;
tokio::spawn(async { websocket_handler(ws_tx_for_handler).await; });
// this isn't necessary for program functioning
// and also error handling this is a PITA
// maybe i'll make this proper in a future update. no promises.
let is_debug_mode = cfg!(debug_assertions);
let force_console = std::env::var("SKL_NON_CRITICAL").is_ok();
if !(is_debug_mode && force_console) {
let _ = mark_process_critical();
}
// Wait for the shutdown signal
tokio::select! {