From ad749458821beb297760885a6c84e0ce59746ad7 Mon Sep 17 00:00:00 2001 From: Kenneth van Ewijk Date: Tue, 20 Oct 2015 15:09:51 +0200 Subject: [PATCH] Fixed duplicate old sessions --- ErgometerServer/DoctorThread.cs | 2 +- ErgometerServer/FileHandler.cs | 25 +++++++++++++++++++++++-- ErgometerServer/Server.cs | 3 +-- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/ErgometerServer/DoctorThread.cs b/ErgometerServer/DoctorThread.cs index eafacdf..5869ece 100644 --- a/ErgometerServer/DoctorThread.cs +++ b/ErgometerServer/DoctorThread.cs @@ -79,7 +79,7 @@ namespace ErgometerServer foreach(Tuple session in sessions) { sendToDoctor(new NetCommand(session.Item2, session.Item3, session.Item1)); - Console.WriteLine(new NetCommand(session.Item2, session.Item3, session.Item1)); + Thread.Sleep(10); } break; diff --git a/ErgometerServer/FileHandler.cs b/ErgometerServer/FileHandler.cs index d2a9ca5..10ff42b 100644 --- a/ErgometerServer/FileHandler.cs +++ b/ErgometerServer/FileHandler.cs @@ -87,15 +87,36 @@ namespace ErgometerServer { string[] directories = Directory.GetDirectories(DataFolder); List> sessiondata = new List>(); + for (int i = 0; i < directories.Length; i++) { string directoryname = Path.GetFileName(directories[i]); + string props = File.ReadAllText(GetSessionFile(int.Parse(directoryname))); - string[] properties = props.Split('\n'); + + string[] stringSeparators = new string[] { "\r\n" }; + string[] properties = props.Split(stringSeparators, StringSplitOptions.None); + + int session = int.Parse(directoryname); + + bool active = false; + + foreach(ClientThread t in Server.clients) + { + if (t.session == session) + active = true; + } + string name = properties[0]; double date = double.Parse(properties[1]); - sessiondata.Add(new Tuple(int.Parse(directoryname), name, date)); + + if (!active) + { + Tuple tup = new Tuple(session, name, date); + sessiondata.Add(tup); + } } + return sessiondata; } diff --git a/ErgometerServer/Server.cs b/ErgometerServer/Server.cs index 9117b6c..66f1e2d 100644 --- a/ErgometerServer/Server.cs +++ b/ErgometerServer/Server.cs @@ -17,7 +17,7 @@ namespace ErgometerServer new Server(); } - public List clients { get; } + public static List clients = new List(); private DoctorThread doctor; public Dictionary users; @@ -28,7 +28,6 @@ namespace ErgometerServer FileHandler.CheckStorage(); users = FileHandler.LoadUsers(); - clients = new List(); TcpListener listener = new TcpListener(NetHelper.GetIP("127.0.0.1"), 8888); //TcpListener listener = new TcpListener(NetHelper.GetIP(GetIp()), 8888);