From 1f9bdb3ac09be32c74089080a9f0cae247a85e04 Mon Sep 17 00:00:00 2001 From: deadvey Date: Sun, 31 May 2026 13:12:37 +0100 Subject: [PATCH] did allman indenting --- .pingscores.json.swp | Bin 12288 -> 0 bytes pingscores.json | 1 - src/.main.rs.swp | Bin 0 -> 28672 bytes src/main.rs | 181 +++++++++++++++++++++++++++++-------------- 4 files changed, 121 insertions(+), 61 deletions(-) delete mode 100644 .pingscores.json.swp delete mode 100644 pingscores.json create mode 100644 src/.main.rs.swp diff --git a/.pingscores.json.swp b/.pingscores.json.swp deleted file mode 100644 index ea86b8c56d4adac265a0ab17e99516930d695d6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmYc?2=nw+u+%eRU|?VnU|?Y3l*$q?6KA+~g@GX@H8G_uwGt$Q7w6p#eyXvXY{Luuv$7If_R^U^E0qLtr!nMnhmU1V%$(Gz3ON zU^E0qNC=b^Ff!CLFfcGd{mY1hh6;~TqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd70wFa#1)7#P;^GccUuhs^)O`u`yQ36R(j^wX%5M?+vV1V%$(Gz3ONU^E0q zLtr!nMnhmU1V%$(Gz3ONVAzI0b+uAzQBi)8l2x>Uj+sHMj#6S?ex8z5w4tevA&3iI Td=C;aG_o`@wa_t$tz`fJ;Y2vn diff --git a/pingscores.json b/pingscores.json deleted file mode 100644 index eac76ad..0000000 --- a/pingscores.json +++ /dev/null @@ -1 +0,0 @@ -{"error":[0,60],"anon":[15,10],"deadvey":[1129258,0]} diff --git a/src/.main.rs.swp b/src/.main.rs.swp new file mode 100644 index 0000000000000000000000000000000000000000..5f0449a7b8b877cc1a167d7a5cd02f18e6ad8079 GIT binary patch literal 28672 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 BQ6T^T literal 0 HcmV?d00001 diff --git a/src/main.rs b/src/main.rs index 043c5dd..2514d8a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,5 @@ -use std::{ +use std:: +{ collections::HashMap, fs, io::Write, @@ -6,9 +7,11 @@ use std::{ sync::Arc, }; -use axum::{ +use axum:: +{ Router, - extract::{ + extract:: + { State, ws::{Message, WebSocket, WebSocketUpgrade}, }, @@ -19,31 +22,36 @@ use futures::StreamExt as _; use rand::random_bool; use serde::{Deserialize, Serialize, de}; use serde_json::json; -use tokio::{ +use tokio:: +{ sync::{Mutex, mpsc}, time::{Duration, sleep}, }; #[derive(Deserialize, Serialize, Debug, Ord, Eq, PartialEq, PartialOrd, Clone)] -struct Entry { +struct Entry +{ score: u32, person: String, } #[derive(Clone)] -struct AppState { +struct AppState +{ tx: mpsc::Sender, hiscores: Arc>>, loscores: Arc>>, pingscores: Arc>>, // u64 is reset count and u32 is PB } -struct LeaderboardUpdate { +struct LeaderboardUpdate +{ name: Arc, update: LeaderboardUpdateType, } -enum LeaderboardUpdateType { +enum LeaderboardUpdateType +{ Reset { hiscore_pingscore: u32 }, Increment { loscore: u32 }, } @@ -57,19 +65,25 @@ const PATH_PINGSCORES: &str = "pingscores.json"; const MAX_LEADERBOARD: usize = 20; #[tokio::main] -async fn main() -> anyhow::Result<()> { - fn read_file de::Deserialize<'de>>( +async fn main() -> anyhow::Result<()> +{ + fn read_file de::Deserialize<'de>> + ( file_path: &str, - ) -> anyhow::Result>> { + ) + -> anyhow::Result>> + { let file_contents: String = fs::read_to_string(file_path)?; Ok(Arc::new(Mutex::new(serde_json::from_str(&file_contents)?))) } /// Makes the vector at `vec` one with a capacity of exactly [`MAX_LEADERBOARD`] if `vec` is /// smaller or equal. - fn exact_leaderboard(mut vec: impl DerefMut>) { + fn exact_leaderboard(mut vec: impl DerefMut>) + { let old_vec = std::mem::replace(&mut *vec, Vec::with_capacity(MAX_LEADERBOARD)); - for e in old_vec { + for e in old_vec + { vec.push(e); } } @@ -81,20 +95,22 @@ async fn main() -> anyhow::Result<()> { let pingscores: Arc>> = read_file(PATH_PINGSCORES)?; let (tx, rx) = mpsc::channel::(1024); - { let (hiscores, loscores, pingscores) = (hiscores.clone(), loscores.clone(), pingscores.clone()); - tokio::spawn(async move { + tokio::spawn + (async move { handle_hiscores(rx, &hiscores, &loscores, &pingscores).await; }); } { let pingscores = pingscores.clone(); - tokio::spawn(async move { + tokio::spawn + (async move { // write pingscores every 30s - loop { + loop + { sleep(Duration::from_secs(30)).await; let pingscores = pingscores.lock().await; let file_contents: String = serde_json::to_string(&pingscores.clone()) @@ -116,7 +132,8 @@ async fn main() -> anyhow::Result<()> { .route("/", get(index)) .route("/ws", get(ws_handler)) .route("/leaderboard", get(leaderboard)) - .with_state(AppState { + .with_state + (AppState { tx, hiscores: Arc::clone(&hiscores), loscores: Arc::clone(&loscores), @@ -132,40 +149,50 @@ async fn main() -> anyhow::Result<()> { Ok(()) } -async fn index() -> Html<&'static str> { +async fn index() -> Html<&'static str> +{ Html(include_str!("../index.html")) } -async fn leaderboard() -> Html<&'static str> { +async fn leaderboard() -> Html<&'static str> +{ Html(include_str!("../leaderboard.html")) } // receiver: 0 for hiscore, 1 for loscore, 2 for pingscore -async fn handle_hiscores( +async fn handle_hiscores +( mut rx: mpsc::Receiver, hiscores: &Mutex>, loscores: &Mutex>, pingscores: &Mutex>, -) { - fn update_scoretable> + DerefMut>( +) +{ + fn update_scoretable> + DerefMut> + ( score_name: &str, mut scoretable_lock: G, name: &str, score: u32, file_path: &str, - ) -> anyhow::Result<()> { + ) + -> anyhow::Result<()> + { let scoretable = &mut *scoretable_lock; - - if let Some(index_to_insert_at) = scoretable.iter().position(|e| score > e.score) { + if let Some(index_to_insert_at) = scoretable.iter().position(|e| score > e.score) + { println!("New {score_name} {score} by {name}"); scoretable[index_to_insert_at..].rotate_right(1); - let push_out = std::mem::replace( + let push_out = std::mem::replace + ( &mut scoretable[index_to_insert_at], - Entry { + Entry + { score, person: name.to_string(), }, ); - if scoretable.len() < MAX_LEADERBOARD { + if scoretable.len() < MAX_LEADERBOARD + { scoretable.push(push_out); } @@ -177,9 +204,12 @@ async fn handle_hiscores( .open(file_path)?; file.write_all(file_contents.as_bytes())?; file.flush()?; - } else if scoretable.len() < MAX_LEADERBOARD { + } + else if scoretable.len() < MAX_LEADERBOARD + { println!("New {score_name} {score} by {name}"); - scoretable.push(Entry { + scoretable.push + (Entry { score, person: name.to_string(), }); @@ -204,13 +234,17 @@ async fn handle_hiscores( .expect("failed to write hiscores"); drop(file); - loop { + loop + { let LeaderboardUpdate { name, update } = rx.recv().await.expect("channel error"); - match update { - LeaderboardUpdateType::Reset { hiscore_pingscore } => { + match update + { + LeaderboardUpdateType::Reset { hiscore_pingscore } => + { // Hiscore - update_scoretable( + update_scoretable + ( "hiscore", hiscores.lock().await, &name, @@ -222,7 +256,8 @@ async fn handle_hiscores( // Pingscore let mut pingscores = pingscores.lock().await; // pb - if hiscore_pingscore > pingscores.get(&*name).unwrap_or(&(0, 0)).1 { + if hiscore_pingscore > pingscores.get(&*name).unwrap_or(&(0, 0)).1 + { pingscores.entry(name.to_string()).or_insert((0, 0)).1 = hiscore_pingscore; println!("{name} new PB: {hiscore_pingscore}"); } @@ -230,8 +265,10 @@ async fn handle_hiscores( drop(pingscores); } - LeaderboardUpdateType::Increment { loscore } => { - update_scoretable( + LeaderboardUpdateType::Increment { loscore } => + { + update_scoretable + ( "loscore", loscores.lock().await, &name, @@ -244,9 +281,17 @@ async fn handle_hiscores( } } -async fn ws_handler(ws: WebSocketUpgrade, State(state): State) -> impl IntoResponse { - ws.on_upgrade(|socket| async move { - handle_socket( +async fn ws_handler +( + ws: WebSocketUpgrade, + State(state): State +) + -> impl IntoResponse +{ + ws.on_upgrade + (|socket| async move { + handle_socket + ( socket, &state.tx, &state.hiscores, @@ -257,17 +302,20 @@ async fn ws_handler(ws: WebSocketUpgrade, State(state): State) -> impl }) } -async fn handle_socket( +async fn handle_socket +( mut socket: WebSocket, tx: &mpsc::Sender, hiscores: &Mutex>, loscores: &Mutex>, pingscores: &Mutex>, -) { +) +{ let mut value: u32 = 0; - - let msg = { - json!({ + let msg = + { + json! + ({ "hiscores": &*hiscores.lock().await, "loscores": &*loscores.lock().await, "pingscores": &*pingscores.lock().await @@ -275,11 +323,13 @@ async fn handle_socket( .to_string() }; - let Some(name) = socket.next().await else { + let Some(name) = socket.next().await else + { eprintln!("user gave no username"); return; }; - let name: Arc = match name.expect("failed to recv socket msg") { + let name: Arc = match name.expect("failed to recv socket msg") + { Message::Text(text) if let text = text.to_string() && validate_name(&text) => @@ -296,15 +346,22 @@ async fn handle_socket( let _ = socket.send(Message::Text(msg.into())).await; - while let Some(msg) = socket.next().await { - match msg { - Ok(Message::Text(_)) => { - if random_bool(CHANCE) { + while let Some(msg) = socket.next().await + { + match msg + { + Ok(Message::Text(_)) => + { + // 1/3 chance of failing + if random_bool(CHANCE) + { // reset let _ = tx - .send(LeaderboardUpdate { + .send(LeaderboardUpdate + { name: name.clone(), - update: LeaderboardUpdateType::Reset { + update: LeaderboardUpdateType::Reset + { hiscore_pingscore: value, }, }) @@ -312,12 +369,14 @@ async fn handle_socket( resets += 1; value = 0; } - // 1/3 chance of failing - else { + else + { value += 1; - if prev == 0 { + if prev == 0 + { let _ = tx - .send(LeaderboardUpdate { + .send + (LeaderboardUpdate { name: name.clone(), update: LeaderboardUpdateType::Increment { loscore: resets }, }) @@ -329,7 +388,8 @@ async fn handle_socket( prev = value; } - Ok(Message::Close(_)) => { + Ok(Message::Close(_)) => + { break; } @@ -342,7 +402,8 @@ fn validate_name(input: &str) -> bool { let input = input.trim(); // Length check - if input.is_empty() || input.len() > 32 { + if input.is_empty() || input.len() > 32 + { return false; }