using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.Integration.Operation; using Tango.Telemetry.Telemetries; namespace Tango.Telemetry.Sources { public class TelemetryMachineStatusStreamingSource : ITelemetryStreamingSource { private IMachineOperator _machineOperator; public bool IsStarted { get; private set; } public string Name { get; } = "Machine Status Streaming"; public bool RequiresTelemetryDuplicationTracking { get; } public event EventHandler TelemetryAvailable; public TelemetryMachineStatusStreamingSource(IMachineOperator machineOperator) { _machineOperator = machineOperator; } public void Start() { if (!IsStarted) { IsStarted = true; _machineOperator.MachineStatusChanged += MachineOperator_MachineStatusChanged; } } public void Stop() { if (IsStarted) { IsStarted = false; _machineOperator.MachineStatusChanged -= MachineOperator_MachineStatusChanged; } } private void MachineOperator_MachineStatusChanged(object sender, PMR.MachineStatus.MachineStatus status) { if (IsStarted) { TelemetryAvailable?.Invoke(this, new TelemetryAvailableEventArgs() { TelemetryObject = new TelemetryMachineStatus() { Status = status } }); } } public void Dispose() { Stop(); } } }