void StartQosPing(string mmServiceURL, string multiplayFleetID, CancellationToken token = default) { OnStateChanged(MatchmakingState.QosPing); m_QosPing = new QosPingAsyncWrapper(m_QosServers); m_QosPing.Start(qosResults => { if (token.IsCancellationRequested) { Debug.Log("Qos Ping Cancelled"); OnStateChanged(MatchmakingState.Idle); return; } if (qosResults == null || qosResults.Count == 0) { Debug.LogError($"Qos Pinging Failed - No valid results found for {multiplayFleetID}"); OnStateChanged(MatchmakingState.Idle); return; } m_QosResults = qosResults; QosConnector.Instance.RegisterProvider(() => m_QosResults); m_QosPing.Dispose(); // Move on to start matchmaking SendMatchRequest(mmServiceURL, token); }); }
IEnumerator DoQosAsync() { // Qos Discovery - Find servers to ping var qosDiscovery = new QosDiscoveryAsyncWrapper(); yield return(qosDiscovery.StartEnumerator(m_FleetId)); var servers = qosDiscovery.Servers; if (servers == null || servers.Length == 0) { Debug.LogWarning("Qos was requested, but no qos servers could be found."); yield break; } // Qos Pings - Ping servers for info var qosPinger = new QosPingAsyncWrapper(servers); yield return(qosPinger.StartEnumerator()); m_QosResults = qosPinger.QosResults; if (m_QosResults == null || m_QosResults.Count == 0) { Debug.LogWarning("Qos was requested, but no valid qos results were returned."); } else { QosConnector.Instance.RegisterProvider(() => m_QosResults); } }