//HANDLE MESSAGE public void HandleMessage() { string input = Read.ReadLine(); if (input.StartsWith("mydist")) { //update distance string[] inp = input.Split(); string k = "" + conP + "," + inp[1]; int v = int.Parse(inp[1]); int dist = int.Parse(inp[2]); //if you don't know v, add it to your list lock (Proces.myLock) { if (!Proces.V.Contains(v)) { Proces.V.Add(v); Proces.InitValue(v); } Proces.ndis[k] = dist; Proces.RecomputeV(v); } } else if (input.StartsWith("bericht")) { string[] delen = input.Split(new char[] { ' ' }, 3); if (delen[1] == Proces.MijnPoort.ToString()) { Console.WriteLine(delen[2]); } else { lock (Proces.myLock) { int sendto = Proces.Nb[int.Parse(delen[1])]; Console.WriteLine("Bericht voor {0} doorgestuurd naar {1}", delen[1], sendto); Proces.Buren[sendto].Write.WriteLine(input); } } } else if (input.StartsWith("reqTab")) { lock (Proces.myLock) { Proces.messageMyTable(conP); } } else if (input.StartsWith("disconnect")) { throw new Exception(); } }
// LET OP: Nadat er verbinding is gelegd, kun je vergeten wie er client/server is (en dat kun je aan het Connection-object dus ook niet zien!) // Deze loop leest wat er binnenkomt en print dit public void ReaderThread() { //first check if all connections are set and initialized while (!Proces.Ready) { Thread.Sleep(1000); } try { while (true) { HandleMessage(); } } catch // Verbinding is kennelijk verbroken { lock (Proces.myLock) { Proces.Disconnect(conP); } } }