diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2025-08-21 14:36:42 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2025-08-21 14:36:42 +0300 |
| commit | 33c5e689caa9842aa29dac915b4f8d83564cee0c (patch) | |
| tree | e8a96988ce0cb66797fae688c5e753359da41f03 /Software/Visual_Studio/Tango.Telemetry/Sources | |
| parent | 9c64ff964e98c5a27bb63cecf3042499b6b50736 (diff) | |
| download | Tango-33c5e689caa9842aa29dac915b4f8d83564cee0c.tar.gz Tango-33c5e689caa9842aa29dac915b4f8d83564cee0c.zip | |
Telemetry JobStatus
Diffstat (limited to 'Software/Visual_Studio/Tango.Telemetry/Sources')
| -rw-r--r-- | Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryJobStatusSource.cs | 133 | ||||
| -rw-r--r-- | Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryLogsStreamingSourceConfig.cs | 4 |
2 files changed, 135 insertions, 2 deletions
diff --git a/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryJobStatusSource.cs b/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryJobStatusSource.cs new file mode 100644 index 000000000..93a5cc54e --- /dev/null +++ b/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryJobStatusSource.cs @@ -0,0 +1,133 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.BL.Entities; +using Tango.Integration.Operation; +using Tango.Telemetry.Telemetries; + +namespace Tango.Telemetry.Sources +{ + public class TelemetryJobStatusSource : ITelemetryStreamingSource + { + private IMachineOperator _machineOperator; + private Job _job; + private TelemetryJobStatus _lastStatus; + private String _groupID; + private DateTime _startTime; + + public bool IsStarted { get; private set; } + public string Name { get; } = "Job Status Streaming"; + public bool RequiresTelemetryDuplicationTracking { get; } + + public event EventHandler<TelemetryAvailableEventArgs> TelemetryAvailable; + + public TelemetryJobStatusSource(IMachineOperator machineOperator) + { + _machineOperator = machineOperator; + } + + public void Start() + { + if (!IsStarted) + { + IsStarted = true; + _machineOperator.PrintingStarted += MachineOperator_PrintingStarted; + } + } + + public void Stop() + { + if (IsStarted) + { + IsStarted = false; + _machineOperator.PrintingStarted -= MachineOperator_PrintingStarted; + } + } + + private void MachineOperator_PrintingStarted(object sender, PrintingEventArgs e) + { + if (e.JobHandler != null) + { + _groupID = Guid.NewGuid().ToString(); + _job = e.Job; + _startTime = DateTime.UtcNow; + e.JobHandler.StatusChanged += JobHandler_StatusChanged; + e.JobHandler.Failed += JobHandler_Failed; + } + } + + private void JobHandler_StatusChanged(object sender, RunningJobStatus status) + { + if (IsStarted) + { + TelemetryJobStatus tStatus = new TelemetryJobStatus(); + + tStatus.JobName = _job?.Name; + + if (status.ProgressMinusSettingUp > 0) + { + tStatus.Status = TelemetryJobStatus.JobStatus.InProgress; + } + + if (status.IsCompleted) + { + tStatus.Status = TelemetryJobStatus.JobStatus.Completed; + } + + if (status.IsFailed) + { + tStatus.Status = TelemetryJobStatus.JobStatus.Failed; + } + + if (status.IsCanceled) + { + tStatus.Status = TelemetryJobStatus.JobStatus.Aborted; + } + + tStatus.ID = _groupID; + tStatus.TotalTime = status.TotalTime; + tStatus.RemainingTime = status.RemainingTime; + + tStatus.Progress = status.ProgressMinusSettingUp; + tStatus.TotalProgress = status.TotalProgressMinusSettingUp; + + tStatus.CurrentUnit = status.CurrentUnit; + tStatus.RemainingUnits = status.RemainingUnits; + + tStatus.CurrentUnitProgress = status.CurrentUnitProgress; + tStatus.CurrentUnitTotalProgress = status.CurrentUnitTotalProgress; + + tStatus.Message = status.Message; + + _lastStatus = tStatus; + + TelemetryAvailable?.Invoke(this, new TelemetryAvailableEventArgs() + { + TelemetryObject = tStatus, + DisableDeliveryRetries = true + }); + } + } + + private void JobHandler_Failed(object sender, Exception e) + { + if (_lastStatus != null) + { + _lastStatus.Message = e.FlattenMessage(); + + TelemetryAvailable?.Invoke(this, new TelemetryAvailableEventArgs() + { + TelemetryObject = _lastStatus, + DisableDeliveryRetries = true + }); + } + } + + public void Dispose() + { + Stop(); + } + } +} diff --git a/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryLogsStreamingSourceConfig.cs b/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryLogsStreamingSourceConfig.cs index 1de30976a..440843003 100644 --- a/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryLogsStreamingSourceConfig.cs +++ b/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryLogsStreamingSourceConfig.cs @@ -10,11 +10,11 @@ namespace Tango.Telemetry.Sources { public class TelemetryLogsStreamingSourceConfig : SettingsBase { - public List<LogCategory> Categories { get; set; } + public HashSet<LogCategory> Categories { get; set; } public TelemetryLogsStreamingSourceConfig() { - Categories = new List<LogCategory>() { LogCategory.Error, LogCategory.Critical, LogCategory.Warning }; + Categories = new HashSet<LogCategory>() { LogCategory.Error, LogCategory.Critical, LogCategory.Warning }; } } } |
