From b4bb327a45bc7d7d4cc6635050e97eb3be3693d2 Mon Sep 17 00:00:00 2001 From: TCL <1620508360@qq.com> Date: Thu, 27 Apr 2023 00:05:36 +0800 Subject: [PATCH 1/2] chore: add startlockfile in server --- logic/Server/ArgumentOption.cs | 3 +++ logic/Server/GameServer.cs | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/logic/Server/ArgumentOption.cs b/logic/Server/ArgumentOption.cs index 2dddf7d..fa680b1 100644 --- a/logic/Server/ArgumentOption.cs +++ b/logic/Server/ArgumentOption.cs @@ -71,5 +71,8 @@ namespace Server [Option("resultFileName", Required = false, HelpText = "Result file name, saved as .json")] public string ResultFileName { get; set; } = DefaultArgumentOptions.FileName; + + [Option("startLockFile", Required = false, HelpText = "Whether to create a file that identifies whether the game has started")] + public string StartLockFile { get; set; } = DefaultArgumentOptions.FileName; } } \ No newline at end of file diff --git a/logic/Server/GameServer.cs b/logic/Server/GameServer.cs index b81bfe7..080ae7b 100644 --- a/logic/Server/GameServer.cs +++ b/logic/Server/GameServer.cs @@ -45,6 +45,7 @@ namespace Server if (id == GameObj.invalidID) return; //如果有未初始化的玩家,不开始游戏 } Console.WriteLine("Game starts!"); + CreateStartFile(); game.StartGame((int)options.GameTimeInSecond * 1000); Thread.Sleep(1); new Thread(() => @@ -74,6 +75,16 @@ namespace Server }) { IsBackground = true }.Start(); } + + public void CreateStartFile() + { + if (options.StartLockFile != DefaultArgumentOptions.FileName) + { + using var _ = File.Create(options.StartLockFile); + Console.WriteLine("Successfully Created StartLockFile!"); + } + } + public void WaitForEnd() { this.endGameSem.Wait(); From 06e326e0ab0d346398575bfe551899dce0d35e73 Mon Sep 17 00:00:00 2001 From: Changli Tang <84725343+TCL606@users.noreply.github.com> Date: Thu, 27 Apr 2023 00:10:28 +0800 Subject: [PATCH 2/2] Update run.sh --- dependency/shell/run.sh | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/dependency/shell/run.sh b/dependency/shell/run.sh index 70a1286..5b44566 100644 --- a/dependency/shell/run.sh +++ b/dependency/shell/run.sh @@ -3,7 +3,7 @@ python_dir=/usr/local/PlayerCode/CAPI/python/PyAPI playback_dir=/usr/local/playback -nice -10 ./Server --port 8888 --studentCount 4 --trickerCount 1 --gameTimeInSecond 600 --url $URL --token $TOKEN --fileName $playback_dir/video > $playback_dir/server.log & +nice -10 ./Server --port 8888 --studentCount 4 --trickerCount 1 --gameTimeInSecond 600 --url $URL --token $TOKEN --fileName $playback_dir/video --startLockFile $playback_dir/start.lock > $playback_dir/server.log & server_pid=$! sleep 5 for k in {1..2} @@ -39,12 +39,20 @@ do popd done -ps -p $server_pid -while [ $? -eq 0 ] -do - sleep 1 - ps -p $server_pid -done +sleep 10 -touch $playback_dir/finish.lock -echo "Finish" +if [ -f $playback_dir/start.lock ]; then + ps -p $server_pid + while [ $? -eq 0 ] + do + sleep 1 + ps -p $server_pid + done + touch $playback_dir/finish.lock + echo "Finish" +else + echo "Failed to start game." + touch temp.lock + mv -f temp.lock $playback_dir/video.thuaipb + kill -9 $server_pid +fi