private void PollEncodeProgress() { IntPtr json = hbFunctions.hb_get_state_json(this.Handle); string statusJson = Marshal.PtrToStringAnsi(json); JsonState state = JsonConvert.DeserializeObject <JsonState>(statusJson); TaskState taskState = state != null?TaskState.FromRepositoryValue(state.State) : null; if (taskState != null && (taskState == TaskState.Working || taskState == TaskState.Muxing || taskState == TaskState.Searching)) { if (this.EncodeProgress != null) { TimeSpan eta = TimeSpan.FromSeconds(state.Working.ETASeconds); var progressEventArgs = new EncodeProgressEventArgs(state.Working.Progress, state.Working.Rate, state.Working.RateAvg, eta, state.Working.PassID, state.Working.Pass, state.Working.PassCount, taskState.Code); this.EncodeProgress(this, progressEventArgs); } } else if (taskState != null && taskState == TaskState.WorkDone) { this.encodePollTimer.Stop(); if (this.EncodeCompleted != null) { this.EncodeCompleted( this, new EncodeCompletedEventArgs(state.WorkDone.Error != (int)hb_error_code.HB_ERROR_NONE)); } } }
private async void PollEncodeProgress() { ServerResponse response = null; try { response = await this.MakeHttpGetRequest("PollEncodeProgress"); } catch (Exception e) { if (this.encodePollTimer != null) { this.encodePollTimer.Stop(); } } if (response == null || !response.WasSuccessful) { return; } string statusJson = response.JsonResponse; JsonState state = JsonConvert.DeserializeObject <JsonState>(statusJson); TaskState taskState = state != null?TaskState.FromRepositoryValue(state.State) : null; if (taskState != null && (taskState == TaskState.Working || taskState == TaskState.Muxing || taskState == TaskState.Searching)) { if (this.EncodeProgress != null) { var progressEventArgs = new EncodeProgressEventArgs( fractionComplete: state.Working.Progress, currentFrameRate: state.Working.Rate, averageFrameRate: state.Working.RateAvg, estimatedTimeLeft: TimeSpan.FromSeconds(state.Working.ETASeconds), passId: state.Working.PassID, pass: state.Working.Pass, passCount: state.Working.PassCount, stateCode: taskState.Code); this.EncodeProgress(this, progressEventArgs); } } else if (taskState != null && taskState == TaskState.WorkDone) { this.encodePollTimer.Stop(); this.EncodeCompleted?.Invoke(sender: this, e: new EncodeCompletedEventArgs(state.WorkDone.Error != 0)); } }
private void PollScanProgress() { IntPtr json = HBFunctions.hb_get_state_json(this.hbHandle); string statusJson = Marshal.PtrToStringAnsi(json); this.log.LogMessage(statusJson, LogMessageType.Progress, LogLevel.Trace); JsonState state = null; if (!string.IsNullOrEmpty(statusJson)) { state = JsonConvert.DeserializeObject <JsonState>(statusJson); } TaskState taskState = state != null?TaskState.FromRepositoryValue(state.State) : null; if (taskState != null && (taskState == TaskState.Scanning || taskState == TaskState.Searching)) { if (this.ScanProgress != null && state.Scanning != null) { this.ScanProgress(this, new ScanProgressEventArgs(state.Scanning.Progress, state.Scanning.Preview, state.Scanning.PreviewCount, state.Scanning.Title, state.Scanning.TitleCount)); } } else if (taskState != null && taskState == TaskState.ScanDone) { this.scanPollTimer.Stop(); var jsonMsg = HBFunctions.hb_get_title_set_json(this.hbHandle); this.titlesJson = InteropUtilities.ToStringFromUtf8Ptr(jsonMsg); this.log.LogMessage(this.titlesJson, LogMessageType.Progress, LogLevel.Trace); if (string.IsNullOrEmpty(this.titlesJson)) { this.log.LogMessage("Scan Error: No Scan Data Returned.", LogMessageType.API, LogLevel.Error); } else { this.titles = JsonConvert.DeserializeObject <JsonScanObject>(this.titlesJson); if (this.titles != null) { this.featureTitle = this.titles.MainFeature; } } if (this.ScanCompleted != null) { this.ScanCompleted(this, new System.EventArgs()); } } }
private void PollScanProgress() { IntPtr json = HBFunctions.hb_get_state_json(this.Handle); string statusJson = Marshal.PtrToStringAnsi(json); JsonState state = null; if (!string.IsNullOrEmpty(statusJson)) { state = JsonSerializer.Deserialize <JsonState>(statusJson, JsonSettings.Options); } TaskState taskState = state != null?TaskState.FromRepositoryValue(state.State) : null; if (taskState != null && (taskState == TaskState.Scanning || taskState == TaskState.Searching)) { if (this.ScanProgress != null && state.Scanning != null) { this.ScanProgress(this, new ScanProgressEventArgs(state.Scanning.Progress, state.Scanning.Preview, state.Scanning.PreviewCount, state.Scanning.Title, state.Scanning.TitleCount)); } } else if (taskState != null && taskState == TaskState.ScanDone) { this.scanPollTimer.Stop(); var jsonMsg = HBFunctions.hb_get_title_set_json(this.Handle); this.TitlesJson = InteropUtilities.ToStringFromUtf8Ptr(jsonMsg); if (!string.IsNullOrEmpty(this.TitlesJson)) { this.Titles = JsonSerializer.Deserialize <JsonScanObject>(this.TitlesJson, JsonSettings.Options); if (this.Titles != null) { this.FeatureTitle = this.Titles.MainFeature; } } if (this.ScanCompleted != null) { this.ScanCompleted(this, new System.EventArgs()); } } }
private void PollEncodeProgress() { IntPtr json = HBFunctions.hb_get_state_json(this.Handle); string statusJson = Marshal.PtrToStringAnsi(json); JsonState state = JsonSerializer.Deserialize <JsonState>(statusJson, JsonSettings.Options); TaskState taskState = state != null?TaskState.FromRepositoryValue(state.State) : null; if (taskState != null && (taskState == TaskState.Working || taskState == TaskState.Muxing || taskState == TaskState.Searching)) { if (this.EncodeProgress != null) { TimeSpan eta = TimeSpan.FromSeconds(state?.Working?.ETASeconds ?? 0); var progressEventArgs = new EncodeProgressEventArgs(0, 0, 0, TimeSpan.MinValue, 0, 0, 0, taskState.Code); if (taskState == TaskState.Muxing || state.Working == null) { progressEventArgs = new EncodeProgressEventArgs(100, 0, 0, TimeSpan.MinValue, 0, 0, 0, taskState.Code); } else { progressEventArgs = new EncodeProgressEventArgs(state.Working.Progress, state.Working.Rate, state.Working.RateAvg, eta, state.Working.PassID, state.Working.Pass, state.Working.PassCount, taskState.Code); } this.EncodeProgress(this, progressEventArgs); } } else if (taskState != null && taskState == TaskState.WorkDone) { this.encodePollTimer.Stop(); if (this.EncodeCompleted != null) { this.EncodeCompleted( this, new EncodeCompletedEventArgs(state.WorkDone.Error)); } } }
private async void PollEncodeProgress() { if (encodeCompleteFired) { this.encodePollTimer?.Stop(); this.encodePollTimer?.Dispose(); return; } ServerResponse response = null; try { if (this.retryCount > 5) { encodeCompleteFired = true; this.encodePollTimer?.Stop(); this.EncodeCompleted?.Invoke(sender: this, e: new EncodeCompletedEventArgs(-11)); if (this.workerProcess != null && !this.workerProcess.HasExited) { this.workerProcess?.Kill(); } return; } response = await this.MakeHttpGetRequest("PollEncodeProgress"); } catch (Exception e) { retryCount = this.retryCount + 1; } if (response == null || !response.WasSuccessful) { retryCount = this.retryCount + 1; return; } this.retryCount = 0; // Reset string statusJson = response.JsonResponse; JsonState state = JsonConvert.DeserializeObject <JsonState>(statusJson); TaskState taskState = state != null?TaskState.FromRepositoryValue(state.State) : null; if (taskState != null && (taskState == TaskState.Working || taskState == TaskState.Searching)) { if (this.EncodeProgress != null) { var progressEventArgs = new EncodeProgressEventArgs( fractionComplete: state.Working.Progress, currentFrameRate: state.Working.Rate, averageFrameRate: state.Working.RateAvg, estimatedTimeLeft: TimeSpan.FromSeconds(state.Working.ETASeconds), passId: state.Working.PassID, pass: state.Working.Pass, passCount: state.Working.PassCount, stateCode: taskState.Code); this.EncodeProgress(this, progressEventArgs); } } else if (taskState != null && taskState == TaskState.WorkDone) { this.encodePollTimer.Stop(); encodeCompleteFired = true; if (this.workerProcess != null && !this.workerProcess.HasExited) { try { this.workerProcess?.Kill(); } catch (Win32Exception e) { Debug.WriteLine(e); } } this.EncodeCompleted?.Invoke(sender: this, e: new EncodeCompletedEventArgs(state.WorkDone.Error)); this.portService.FreePort(this.port); } }