コード例 #1
0
        private async Task Load()
        {
            var requestNumber = _getBackendsListRequestCount++;

            //request backends list
            var serverInfos = await _routerClient.GetServerInfoList(false);

            if (!serverInfos.Any())
            {
                return;
            }

            var meList =
                serverInfos.Where(s => s.Identity.Equals(_serverIdentity)).ToArray();

            if (!meList.Any())
            {
                _logger.Error($"BackendProvider.Load error: can not find me({_serverIdentity}) in serve list");
                return;
            }

            if (meList.Length > 1)
            {
                _logger.Error($"BackendProvider.Load attention: more than 1 servers matched me - (record ids: {string.Join<int>(",",meList.Select(m=>m.Id))}) in serve list");
            }

            _me = meList.First();

            var backends = serverInfos.Where(s =>
                                             s.ServerRole == ServerRole.BackEnd && s.Region == _me.Region &&
                                             s.IsApproved && s.AreVersionsIntersect(_me)).ToList();

            if (!backends.Any())
            {
                _logger.Error($"Received 0 backends from Router!");
            }
            else
            {
                if (requestNumber == 1)
                {
                    _logger.Info($"Received {backends.Count} backends from Router");
                }
                _backends = backends;
            }
        }
コード例 #2
0
        private async Task GetList()
        {
            if (_isRequestingNow)
            {
                return;
            }

            _isRequestingNow = true;
            try
            {
                _serverList = await _routerClient.GetServerInfoList(false);

                _gameServerList = BuildGameServersList();
                _logger.Info($"MatchMakerServerInfoProvider.GetServerInfoListResponse: i have {_gameServerList.Count()} game servers");
            }
            finally
            {
                _isRequestingNow = false;
            }
        }
コード例 #3
0
        public async Task GetRoutes(string routerUrl, string clientVersion, Action <List <Route> > callback)
        {
            var response = await _routerClient.GetServerInfoList(false);

            callback(BuildRoutes(clientVersion, response));
        }