Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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");
                }
            }
        }