public ClientInfo(ClientData data) { timer = new Timer(); this.Data = data; status = CLIENT_STATUS.NONE; }
public void SendResult(ClientData clientData) { for (int i = 0; i < listOfClients.Count; i++) { if (listOfClients[i].Data.Identifier == clientData.id) { if (clientData.recordDist == 0) { continue; } TimeSpan inter = DateTime.Now - clientData.date; listOfClients[i].Data.commTime += inter.Ticks * 100 + clientData.commTime; listOfClients[i].UnPauseTimeCounting(); verticesMgmt.SubmitVertices(listOfClients[i].Data.listOfVertices); listOfClients[i].AddTotalTime(clientData.time); listOfClients[i].SetRecord(clientData.recordVert, clientData.recordDist); if (recordVert == -1) { recordVert = clientData.recordVert; recordDist = clientData.recordDist; Printer.PrintRecord(recordVert, recordDist); } else if (recordDist > clientData.recordDist) { recordVert = clientData.recordVert; recordDist = clientData.recordDist; Printer.PrintRecord(recordVert, recordDist); } if (!verticesMgmt.IsListEmpty()) { listOfClients[i].SetTimer(OnTimeEvent, timeoutInterval); listOfClients[i].Data.listOfVertices = verticesMgmt.GetVertices(numberOfVertsPerClient); listOfClients[i].Data.date = DateTime.Now; listOfClients[i].Data.Callback.SendData(listOfClients[i].Data); listOfClients[i].IsFree = false; //Console.WriteLine("Wysłałem wierzcholek do klienta {0}", listOfClients[i].Data.Identifier); listOfClients[i].PauseTimeCounting(); } else { listOfClients[i].StopTimer(); listOfClients[i].IsFree = true; listOfClients[i].StopTimeCounting(); //listOfClients[i].Data.Callback.JoinAccept(); Console.WriteLine("Brak wolnych wierzchołków dla klienta:{0}", listOfClients[i].Data.Identifier); //Console.WriteLine("Liczba skonczonych klientow:{0}, wszyscy klienci:{1}", clientsDone, listOfClients.Count); bool isAllDone = true; if (!listOfClients[i].IsDone) { listOfClients[i].IsDone = true; listOfClients[i].LifeTime.Pause(); foreach (Client cli in listOfClients) { if (!cli.IsDone) { isAllDone = false; Console.WriteLine("Liczba klientow zakonczonych:{0}", ++clientsDone); break; } } } if (isAllDone) { long clientsTotalTime = 0; long clientsMaintainTime = 0; long clientsCommTime = 0; foreach (Client c in listOfClients) { c.LifeTime.Stop(); clientsMaintainTime += c.MaintainTime; clientsTotalTime += c.TotalTime; clientsCommTime += c.Data.commTime; } Console.WriteLine("Progam zakonczony"); stopTotalTime = DateTime.Now; intervalTotalTime = stopTotalTime - startTotalTime; totalTime = intervalTotalTime.Ticks * 100; int numberOfClients = clientsDone + 1; clientsTotalTime /= numberOfClients; clientsCommTime /= numberOfClients; //clientsTotalTime = totalTime - clientsComTime; Console.WriteLine("Średni czas algorytmu:" + clientsTotalTime); // long commTotalTime = clientsMaintainTime; clientsMaintainTime /= numberOfClients; Console.WriteLine("Średni czas obsługi:" + clientsMaintainTime); Console.WriteLine("Średni czas kom:" + clientsCommTime); //totalTime = commTotalTime + clientsTotalTime; Console.WriteLine("Czas całkowity:" + totalTime); FileStream fileStream = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite); StreamWriter w = new StreamWriter(fileStream, Encoding.UTF8); w.WriteLine("Ilosc wierzchołków;ilość watkow;ilosc klientow;wielkosc pakietu;czas calk.;czas kom.;śr. czas alg.; śr. czas obsługi;rekord nr.;rekord dystans"); w.WriteLine(matrix.Length + ";" + numberOfThreads + ";" + numberOfClients + ";" + numberOfVertsPerClient + ";" + totalTime + ";" + clientsCommTime + ";" + clientsTotalTime + ";" + clientsMaintainTime + ";" + recordVert + ";" + recordDist); w.Close(); fileStream.Close(); fileStream = new FileStream("workers_" + fileName, FileMode.Create, FileAccess.ReadWrite); w = new StreamWriter(fileStream, Encoding.UTF8); w.WriteLine("klient id.;klient nazwa;czas zycia;czas synch. danych;czas całk.;czas obsl.;czas kom.;czas alg.;wierzcholek nr.;wierzcholek dystans"); foreach (Client c in listOfClients) { long time = c.TotalTime + c.MaintainTime + c.Data.commTime; Console.WriteLine("Czas całk. dla {0} to {1}", c.Data.Identifier, time); w.WriteLine(c.Data.Identifier + ";" + c.Data.Name + ";" + c.LifeTime.GetTime() + ";" + c.DataSyncTime + ";" + time + ";" + c.MaintainTime + ";" + c.Data.commTime + ";" + c.TotalTime + ";" + c.RecordVertice + ";" + c.RecordDistance); } w.Close(); fileStream.Close(); Console.WriteLine("Dane zapisane do {0} i {1}", fileName, "workers_" + fileName); } else { Console.WriteLine("nie wszyscy klienci gotowi"); } } } } }