private SpectatorGamesResponse FeaturedGamesParseRoutine() { var response = GetFeaturedMatches(_spectatorHandler); if (response != null) { LoggersAdapter.Debug($"Получен ответ для региона {_parsingRegion}"); ProcessFeaturedGamesResponse(response); } else { LoggersAdapter.Debug($"Получен пустой ответ от api-сервера для региона {_parsingRegion}"); } return(response); }
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); } }
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); } }