diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2025-08-16 20:46:30 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2025-08-16 20:46:30 +0300 |
| commit | 5282624fc0f2ba7b5191219a0e941c9b53d1843b (patch) | |
| tree | f4dc6603a125727a59ef956cc05a8dd4b8e2779d /Software/Visual_Studio/Tango.Telemetry/Sources | |
| parent | e9f317178f6454836d488cf1e65d04b20b02d334 (diff) | |
| download | Tango-5282624fc0f2ba7b5191219a0e941c9b53d1843b.tar.gz Tango-5282624fc0f2ba7b5191219a0e941c9b53d1843b.zip | |
Telemetry Logs & Machine Updates.
Diffstat (limited to 'Software/Visual_Studio/Tango.Telemetry/Sources')
4 files changed, 161 insertions, 6 deletions
diff --git a/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryJobRunsHistorySource.cs b/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryJobRunsHistorySource.cs index b13402831..f7aee1f4c 100644 --- a/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryJobRunsHistorySource.cs +++ b/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryJobRunsHistorySource.cs @@ -26,9 +26,16 @@ namespace Tango.Telemetry.Sources } else { - using (ObservablesContext db = ObservablesContext.CreateDefault()) + try + { + using (ObservablesContext db = ObservablesContext.CreateDefault()) + { + return await db.JobRuns.CountAsync(x => x.LastUpdated < from) > 0; + } + } + catch { - return await db.JobRuns.CountAsync(x => x.LastUpdated < from) > 0; + return false; } } } diff --git a/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryLogsStreamingSource.cs b/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryLogsStreamingSource.cs index 8001caac8..9deb93132 100644 --- a/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryLogsStreamingSource.cs +++ b/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryLogsStreamingSource.cs @@ -28,12 +28,12 @@ namespace Tango.Telemetry.Sources _lastFirmwareMessage = new KeyValuePair<DateTime, string>(DateTime.MinValue, String.Empty); } - public TelemetryLogsStreamingSource(IMachineOperator machineOperator) + public TelemetryLogsStreamingSource(IMachineOperator machineOperator) : this() { MachineOperator = machineOperator; } - public void Start() + public virtual void Start() { if (!IsStarted) { @@ -47,13 +47,14 @@ namespace Tango.Telemetry.Sources { if (IsStarted) { - if (Config.Categories.Contains((LogCategory)log.Category)) return; + if (!Config.Categories.Contains((LogCategory)log.Category)) return; if (log.Message == _lastFirmwareMessage.Value && DateTime.UtcNow < _lastFirmwareMessage.Key.AddSeconds(1)) return; _lastFirmwareMessage = new KeyValuePair<DateTime, string>(DateTime.UtcNow, log.Message); TelemetryLog tLog = new TelemetryLog(); + tLog.Source = "Firmware"; tLog.Time = DateTime.UtcNow; tLog.Category = log.Category.ToString(); tLog.Class = log.FileName; @@ -68,9 +69,10 @@ namespace Tango.Telemetry.Sources { if (IsStarted) { - if (Config.Categories.Contains(log.Category)) return; + if (!Config.Categories.Contains(log.Category)) return; TelemetryLog tLog = new TelemetryLog(); + tLog.Source = "Application"; tLog.Time = log.TimeStamp.ToUniversalTime(); tLog.Category = log.Category.ToString(); tLog.Class = log.ClassName; diff --git a/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryMachineUpdatesHistorySource.cs b/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryMachineUpdatesHistorySource.cs new file mode 100644 index 000000000..0b78018e6 --- /dev/null +++ b/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryMachineUpdatesHistorySource.cs @@ -0,0 +1,80 @@ +using System; +using System.Collections.Generic; +using System.Data.Entity; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.BL; +using Tango.BL.Entities; +using Tango.BL.Enumerations; +using Tango.Telemetry.Mappers; +using Tango.Telemetry.Telemetries; + +namespace Tango.Telemetry.Sources +{ + public class TelemetryMachineUpdatesHistorySource : ITelemetryHistorySource + { + private bool _isBusy; + + public TelemetryHistorySourceDirection Direction { get; } = TelemetryHistorySourceDirection.Descending; + + public string Name { get; } = "Machine Updates History"; + + public bool RequiresTelemetryDuplicationTracking { get; } = true; + + public async Task<bool> CanRequestHistory(DateTime from) + { + if (_isBusy) + { + return false; + } + else + { + try + { + using (ObservablesContext db = ObservablesContext.CreateDefault()) + { + return await db.TangoUpdates.CountAsync(x => x.LastUpdated < from) > 0; + } + } + catch + { + return false; + } + } + } + + public async Task<IEnumerable<ITelemetry>> RequestHistory(DateTime from) + { + try + { + _isBusy = true; + + using (ObservablesContext db = ObservablesContext.CreateDefault()) + { + int[] skipArr = { (int)TangoUpdateStatuses.SynchronizationCompleted, (int)TangoUpdateStatuses.SynchronizationFailed, (int)TangoUpdateStatuses.SynchronizationStarted }; + var updates = await db.TangoUpdates.Where(x => x.LastUpdated <= from && !skipArr.Contains(x.Status)).Take(10).ToListAsync(); + + List<TelemetryMachineUpdate> tUpdates = new List<TelemetryMachineUpdate>(); + + foreach (var update in updates) + { + TelemetryMachineUpdate tUpdate = MachineUpdateMapper.MapMachineUpdate(update); + tUpdates.Add(tUpdate); + } + + return tUpdates; + } + } + finally + { + _isBusy = false; + } + } + + public void Dispose() + { + + } + } +} diff --git a/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryMachineUpdatesStreamingSource.cs b/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryMachineUpdatesStreamingSource.cs new file mode 100644 index 000000000..85d5309a5 --- /dev/null +++ b/Software/Visual_Studio/Tango.Telemetry/Sources/TelemetryMachineUpdatesStreamingSource.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; +using System.Data.Entity; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.BL; +using Tango.BL.Entities; +using Tango.BL.Enumerations; +using Tango.Telemetry.Mappers; +using Tango.Telemetry.Telemetries; + +namespace Tango.Telemetry.Sources +{ + public class TelemetryMachineUpdatesStreamingSource : ITelemetryStreamingSource + { + public string Name { get; } = "Machine Updates Streaming"; + + public bool RequiresTelemetryDuplicationTracking { get; } = true; + + public bool IsStarted { get; private set; } + + public event EventHandler<TelemetryAvailableEventArgs> TelemetryAvailable; + + public void Start() + { + if (!IsStarted) + { + IsStarted = true; + TangoUpdate.TangoUpdateSaved += TangoUpdate_UpdateSaved; + } + } + + public void Stop() + { + if (IsStarted) + { + IsStarted = false; + TangoUpdate.TangoUpdateSaved -= TangoUpdate_UpdateSaved; + } + } + + private void TangoUpdate_UpdateSaved(object sender, TangoUpdate update) + { + if (IsStarted) + { + if (!update.IsSynchronization) + { + using (ObservablesContext db = ObservablesContext.CreateDefault()) + { + if (db.TangoUpdates.Any(x => x.Guid == update.Guid)) return; + + TelemetryMachineUpdate tUpdate = MachineUpdateMapper.MapMachineUpdate(update); + + TelemetryAvailable?.Invoke(this, new TelemetryAvailableEventArgs() { TelemetryObject = tUpdate }); + } + } + } + } + + public void Dispose() + { + Stop(); + } + } +} |
