示例#1
0
    /// <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));
    }
示例#2
0
    /// <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);
    }
示例#3
0
 private IEnumerator Ping(string hostName, int port, byte[] message)
 {
     UdpQoSClient.Ping(hostName, port, message);
     yield return(null);
 }