/// <summary> /// Pings a PlayFab server by url for QoS metrics /// </summary> /// <param name="serverUrl"></param> public void Ping(string serverUrl) { byte firstByte = 255; byte secondByte = 255; Byte[] datagram = { firstByte, secondByte }; ThreadWorker worker = new ThreadWorker(); worker.Start(UdpQoSClient.Ping(serverUrl, udpPort, datagram)); }
/// <summary> /// Pings all servers in the QoSServers Dictonary /// </summary> public void PingAllServers() { byte firstByte = 255; byte secondByte = 255; Byte[] datagram = { firstByte, secondByte }; //Create an Array of Threadworkers for each QoSServer we need to ping ThreadWorker[] threadWorkers = new ThreadWorker[QosServers.Count]; //index of threadWorkers; int indexThread = 0; foreach (PlayFabQosServerModel server in QosServers) { threadWorkers[indexThread] = new ThreadWorker(); threadWorkers[indexThread].Start(UdpQoSClient.Ping(server, udpPort, datagram)); indexThread++; } bool threadsWorking = true; //Loop through all Ping threads until they have completed and then Invoke completion events while (threadsWorking) { foreach (ThreadWorker worker in threadWorkers) { if (worker.IsRunning()) { threadsWorking = true; break; } else { threadsWorking = false; } } } threadWorkers = null; OnListServers.Invoke(); //if (OnSOListServers) // OnSOListServers.Raise(QosServers); }
private IEnumerator Ping(string hostName, int port, byte[] message) { UdpQoSClient.Ping(hostName, port, message); yield return(null); }