Beispiel #1
0
        private SpectatorGamesResponse FeaturedGamesParseRoutine()
        {
            var response = GetFeaturedMatches(_spectatorHandler);

            if (response != null)
            {
                LoggersAdapter.Debug($"Получен ответ для региона {_parsingRegion}");
                ProcessFeaturedGamesResponse(response);
            }
            else
            {
                LoggersAdapter.Debug($"Получен пустой ответ от api-сервера для региона {_parsingRegion}");
            }

            return(response);
        }
Beispiel #2
0
        private void MatchResultsParseRoutine(long matchId)
        {
            var response = GetMatchByMatchId(_matchDetailsHandler, matchId);

            if (response != null)
            {
                LoggersAdapter.Debug($"Получен ответ по резам матча для региона {_parsingRegion}");
                //ProcessMatchResultsResponse(response);
            }
            else
            {
                LoggersAdapter.Debug($"Получен пустой ответ по матчу {matchId} от api-сервера для региона {_parsingRegion}");
            }

            var timeLineResponse = GetMatchTimeLineByMatchId(_matchDetailsHandler, matchId);

            if (timeLineResponse != null)
            {
                LoggersAdapter.Debug($"Получен ответ по таймлайну матча для региона {_parsingRegion}");
                //ProcessMatchTimelineResponse(timeLineResponse);
            }
            else
            {
                LoggersAdapter.Debug($"Получен пустой ответ по по таймлайну матча {matchId} от api-сервера для региона {_parsingRegion}");
            }

            if (response != null && timeLineResponse != null)
            {
                switch (response.gameMode)
                {
                case "CLASSIC":
                    new ClassicMatchResultsProcessor().ProcessClassicMatchResultsResponse(response, timeLineResponse, Adapter);
                    break;

                case "ARAM":
                    throw new NotImplementedException();
                    //new AramMatchResultsProcessor();
                    break;
                }
            }
            else
            {
                LoggersAdapter.Info(
                    $"Одна из полученных структур результатов матча пуста - сохранения матча {matchId} не произойдет");
                MatchResultDbClass.UpdateMatchStatus(matchId, Adapter, null, 3);
            }
        }
Beispiel #3
0
        public void Start()
        {
            if (_baseRoutine == null || _baseRoutine?.Status == TaskStatus.Canceled || _baseRoutine?.Status == TaskStatus.Faulted || !MatchParserIsWorking ||
                _matchResultsRoutine == null || _matchResultsRoutine?.Status == TaskStatus.Canceled || _matchResultsRoutine?.Status == TaskStatus.Faulted || !MatchResultsParserIsWorking)
            {
                _baseRoutineCancellationTokenSource = new CancellationTokenSource();
                _baseRoutine = Task.Run(() =>
                {
                    while (!_baseRoutineCancellationTokenSource.IsCancellationRequested)
                    {
                        var timeout = TimeSpan.FromSeconds(10);
                        try
                        {
                            LoggersAdapter.Info($"Старт работы LOL парсера для региона {_parsingRegion}.....");

                            Thread.Sleep(2000);
                            var response = FeaturedGamesParseRoutine();
                            if (response != null)
                            {
                                timeout = TimeSpan.FromSeconds(response.clientRefreshInterval);
                            }
                        }
                        catch (Exception e)
                        {
                            LoggersAdapter.Info($"Исключение в базовой рабочей задаче (повтор через {timeout.TotalSeconds:F1} секунд): {e}");
                        }

                        Thread.Sleep(timeout);
                    }
                }, _baseRoutineCancellationTokenSource.Token);

                _matchResultsRoutineCancellationTokenSource = new CancellationTokenSource();
                _matchResultsRoutine = Task.Run(() =>
                {
                    Thread.Sleep(10000);
                    while (!_matchResultsRoutineCancellationTokenSource.IsCancellationRequested)
                    {
                        var timeout = TimeSpan.FromSeconds(30);
                        LoggersAdapter.Info($"Тик MatchResultsRoutine для региона {_parsingRegion}.....");

                        var matchesToParse = GetMatchesToParse(ApiRegionString);
                        foreach (var match in matchesToParse)
                        {
                            try
                            {
                                Thread.Sleep(2000);
                                MatchResultsParseRoutine(match);
                                LoggersAdapter.Debug($"Обработан матч {match}");
                                Thread.Sleep(2000);
                            }
                            catch (Exception e)
                            {
                                LoggersAdapter.Info(
                                    $"Исключение в >MatchResults< рабочей задаче (повтор через {timeout.TotalSeconds:F1} секунд): {e}");
                            }
                        }

                        Thread.Sleep(timeout);
                    }
                }, _matchResultsRoutineCancellationTokenSource.Token);
            }
        }