private async Task UploadHotsBpHelper(ReplayFile file) { await _bpHelperUploader.CheckDuplicate(file); if (App.Debug) { Log.Trace($"Pre-preparsing file {file.Filename} + {file.GameMode}"); } if (file.GameMode != GameMode.QuickMatch && file.GameMode != GameMode.HeroLeague && file.GameMode != GameMode.TeamLeague && file.GameMode != GameMode.UnrankedDraft && file.GameMode != GameMode.StormLeague) { file.HotsweekUploadStatus = UploadStatus.AiDetected; } // test if replay is eligible for upload (not AI, PTR, Custom, etc) Log.Trace($"Pre-parsing file {file.Filename} : { file.HotsweekUploadStatus }"); while (SuspendUpload) { await Task.Delay(1000); } if (file.HotsweekUploadStatus == UploadStatus.InProgress) { // if it is, upload it await _bpHelperUploader.Upload(file); } }
private async Task UploadLoop() { while (true) { await Task.Delay(1000); if (App.CustomConfigurationSettings.UploadStrategy != UploadStrategy.None && OcrUtil.InGame) { continue; } try { OnStatusChanged(); var files = new Dictionary <ReplayFile, Replay>(); int invalidCount = 0; for (var i = 0; i < 10 && _processingQueue.Any(l => l.Value == 0);) { var file = _processingQueue.OrderByDescending(l => l.Key.Created).FirstOrDefault(l => l.Value == 0).Key; if (file == null) { continue; } if (UplaodToHotsWeek) { file.HotsWeekUploadStatus = UploadStatus.InProgress; } if (UploadToHotsApi) { file.HotsApiUploadStatus = UploadStatus.InProgress; } var replay = _analyzer.Analyze(file); if (replay != null && (file.HotsWeekUploadStatus == UploadStatus.InProgress || file.HotsApiUploadStatus == UploadStatus.InProgress)) { if (_processingQueue.ContainsKey(file)) { _processingQueue[file] = 1; } files[file] = replay; ++i; } else { invalidCount++; if (_processingQueue.ContainsKey(file)) { _processingQueue[file] = 2; } } if (invalidCount == 10) { invalidCount = 0; SaveReplayList(); } OnReplayFileStatusChanged(new EventArgs <ReplayFile>(file)); } if (UplaodToHotsWeek) { await _bpHelperUploader.CheckDuplicate(files.Keys.ToList()); } foreach (var file in files) { if (UploadToHotsApi) { await UploadHotsApi(file.Key); } if (UplaodToHotsWeek) { await UploadHotsBpHelper(file.Key); } if (_processingQueue.ContainsKey(file.Key)) { _processingQueue[file.Key] = 2; } OnReplayFileStatusChanged(new EventArgs <ReplayFile>(file.Key)); } OnStatusChanged(); SaveReplayList(); } catch (Exception ex) { _log.Error(ex, "Error in upload loop"); } } }