diff --git a/Cargo.lock b/Cargo.lock index 1a44362..e881fef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -88,6 +88,7 @@ dependencies = [ "arma-rs", "log", "log4rs", + "once_cell", "regex", "reqwest", "serde", diff --git a/Cargo.toml b/Cargo.toml index aab3130..915e6fc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,6 +9,7 @@ edition = "2021" arma-rs = "1.10.4" log = "0.4.22" log4rs = "1.3.0" +once_cell = "1.19.0" regex = "1.10.6" reqwest = {version = "0.12.7", features = ["blocking"]} serde = { version = "1.0.210", features = ["derive"] } diff --git a/src/commands.rs b/src/commands.rs index 3837622..42f2e4c 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -1,8 +1,15 @@ +use once_cell::sync::Lazy; +use tokio::runtime::Runtime; + use crate::{ structs::LoginPayload, util::{blocking_fetch_auth_token, parse_login_to_payload}, }; +pub static RUNTIME: Lazy = Lazy::new(|| { + Runtime::new().expect("Failed to build the Tokio Runtime") +}); + pub fn get_auth_token(login_payload: LoginPayload) -> String { let api_address = login_payload.address.clone(); let login_info = parse_login_to_payload(login_payload); @@ -14,7 +21,8 @@ pub(crate) mod markers { use crate::{structs::Marker, util::{async_post_markers, parse_marker_to_payload}}; use log::{error, info}; use std::thread; - use tokio::runtime::Runtime; + + use super::RUNTIME; pub fn get(placeholder: String) -> &'static str { info!("{}", placeholder); @@ -24,8 +32,7 @@ pub(crate) mod markers { pub fn post(data: Vec) -> &'static str { thread::spawn(move || { - let rt = Runtime::new().unwrap(); - rt.block_on(async_post_markers(data)); + RUNTIME.block_on(async_post_markers(data)); }); "loading"