/// <summary> /// Получает ответ от сервера из другого региона /// </summary> /// <param name="arr">Информация о запросе и клиенте</param> /// <param name="anotherRegion">номер другого региона</param> public void ReciveAns(int[] arr, int anotherRegion) { TOTAL_QUERY_COUNT++; cluster_client client = (cluster_client)Clients[arr[1]]; client.ReciveAns(time); //Номер региона;номер запроса в регионе;номер запроса;номер клиента; //номер региона клиента; время задержки; время string output = String.Format("{0};{1};{2};{3};{4};{5:F2};{6:F2};{7}", anotherRegion, TOTAL_QUERY_COUNT, arr[0], arr[1], arr[2], client.recive_time, time, local_queue.Count); OutputHandler.WriteLine(output); }
/// <summary> /// проверяет кластеры на наличие выполненных запросов /// </summary> /// <returns>true - если есть сервера с выполенными запросами</returns> bool CheckClusters() { bool flag = false; for (int i = 0; i < Clusters.Count; i++) { cluster cl = (cluster)Clusters[i]; if (cl.query_time < 0.01 && cl.GetQueueCount() > 0) { int[] arr = cl.GetQueryInfo(true); //если запрос из своего региона if (arr[2] == Region_num) { TOTAL_QUERY_COUNT++; cluster_client client = (cluster_client)Clients[arr[1]]; client.ReciveAns(time); //Номер региона;номер запроса в регионе;номер запроса; //номер клиента;номер региона клиента; время задержки; время string output = String.Format( "{0};{1};{2};{3};{4};{5:F2};{6:F2};{7}", Region_num, TOTAL_QUERY_COUNT, arr[0], arr[1], arr[2], client.recive_time, time, local_queue.Count); OutputHandler.WriteLine(output); } else { AnotherQueries.Add(arr); } if (cl.GetQueueCount() > 0) { cl.SetQueryTime(); } flag = true; } } return(flag); }