Преглед на файлове

chore(mm): configuration of matchmaking params

Bryan Lee преди 1 година
родител
ревизия
63b5c12cf0
променени са 3 файла, в които са добавени 22 реда и са изтрити 10 реда
  1. 5 0
      matchmaking/.env.sample
  2. 13 6
      matchmaking/src/config.rs
  3. 4 4
      matchmaking/src/queue/mod.rs

+ 5 - 0
matchmaking/.env.sample

@@ -7,3 +7,8 @@ ALLOWED_ORIGINS=
 GAME_SERVER_EXTERNAL_HOST=
 GAME_SERVER_MANAGER_URL=
 GAME_SERVER_MANAGER_SERVICE_KEY=
+
+# Matchmaking config
+SOLO_GAME_MIN_SIZE=2
+SOLO_GAME_DESIRED_SIZE=4
+SOLO_QUEUE_DESIRED_MAX_WAIT_SECS=20

+ 13 - 6
matchmaking/src/config.rs

@@ -3,7 +3,6 @@ use actix_cors::Cors;
 use chrono::Duration;
 use std::env;
 
-#[allow(dead_code)]
 fn get_secret_text_or_file(var: &str) -> Option<String> {
     let secret_text = env::var(var);
 
@@ -72,7 +71,7 @@ fn get_game_server_manager_config() -> GameServerManagerConfig {
 pub struct MatchmakingConfig {
     pub solo_game_min_size: u8,
     pub solo_game_desired_size: u8,
-    pub solo_game_desired_max_wait_time: Duration,
+    pub solo_queue_desired_max_wait_time: Duration,
 }
 
 impl Default for MatchmakingConfig {
@@ -80,16 +79,24 @@ impl Default for MatchmakingConfig {
         MatchmakingConfig {
             solo_game_min_size: 2,
             solo_game_desired_size: 4,
-            solo_game_desired_max_wait_time: Duration::minutes(1),
+            solo_queue_desired_max_wait_time: Duration::minutes(1),
         }
     }
 }
 
 fn get_matchmaking_config() -> MatchmakingConfig {
     MatchmakingConfig {
-        solo_game_min_size: 2,
-        solo_game_desired_size: 4,
-        solo_game_desired_max_wait_time: Duration::minutes(1),
+        solo_game_min_size: get_secret_text_or_file("SOLO_GAME_MIN_SIZE")
+            .and_then(|s| s.parse::<u8>().ok())
+            .unwrap_or(2),
+        solo_game_desired_size: get_secret_text_or_file("SOLO_GAME_DESIRED_SIZE")
+            .and_then(|s| s.parse::<u8>().ok())
+            .unwrap_or(4),
+        solo_queue_desired_max_wait_time: Duration::seconds(
+            get_secret_text_or_file("SOLO_QUEUE_DESIRED_MAX_WAIT_SECS")
+                .and_then(|s| s.parse::<i64>().ok())
+                .unwrap_or(1),
+        ),
     }
 }
 

+ 4 - 4
matchmaking/src/queue/mod.rs

@@ -107,7 +107,7 @@ impl SoloQueue {
         };
 
         if Utc::now().signed_duration_since(oldest_player.joined_at.0)
-            > config.solo_game_desired_max_wait_time
+            > config.solo_queue_desired_max_wait_time
         {
             return if (self.queue.len() as u8) >= config.solo_game_min_size {
                 QueueStatus::LongWaitReady
@@ -154,7 +154,7 @@ mod tests {
             });
 
             let config = MatchmakingConfig {
-                solo_game_desired_max_wait_time: Duration::seconds(5),
+                solo_queue_desired_max_wait_time: Duration::seconds(5),
                 solo_game_min_size: 2,
                 ..MatchmakingConfig::default()
             };
@@ -177,7 +177,7 @@ mod tests {
             });
 
             let config = MatchmakingConfig {
-                solo_game_desired_max_wait_time: Duration::seconds(5),
+                solo_queue_desired_max_wait_time: Duration::seconds(5),
                 solo_game_min_size: 2,
                 ..MatchmakingConfig::default()
             };
@@ -195,7 +195,7 @@ mod tests {
             });
 
             let config = MatchmakingConfig {
-                solo_game_desired_max_wait_time: Duration::seconds(20),
+                solo_queue_desired_max_wait_time: Duration::seconds(20),
                 ..MatchmakingConfig::default()
             };