浏览代码

feat(matchmaking): leave queue

Bryan Lee 1 年之前
父节点
当前提交
997d2b442b
共有 2 个文件被更改,包括 20 次插入1 次删除
  1. 18 0
      matchmaking/src/queue/leave.rs
  2. 2 1
      matchmaking/src/queue/mod.rs

+ 18 - 0
matchmaking/src/queue/leave.rs

@@ -0,0 +1,18 @@
+use crate::identity::Identity;
+use crate::player::PlayersData;
+use actix_web::{post, web, HttpResponse};
+
+#[post("/leave/")]
+async fn leave(
+    identity: Identity,
+    players_data: web::Data<PlayersData>,
+) -> actix_web::Result<HttpResponse> {
+    let mut queued = players_data
+        .queued
+        .write()
+        .expect("Failed to get write lock on player queue");
+
+    queued.retain(|p| p.user_id != identity.user_id);
+
+    Ok(HttpResponse::Ok().finish())
+}

+ 2 - 1
matchmaking/src/queue/mod.rs

@@ -1,7 +1,8 @@
 mod join;
+mod leave;
 
 use actix_web::web;
 
 pub fn config_service(cfg: &mut web::ServiceConfig) {
-    cfg.service(join::join);
+    cfg.service(join::join).service(leave::leave);
 }