using System; using System.Threading; using Tango.Telemetry; namespace Tango.TelemetryTester.CLI { public class MockStreamingSource : ITelemetryStreamingSource { public string Name { get; } public event EventHandler TelemetryAvailable; private Timer _timer; public int EmittedCount { get; private set; } private bool _isStarted = false; public MockStreamingSource(string name) { Name = name; } public void Start() { if (_isStarted) return; _isStarted = true; _timer = new Timer(SendTelemetry, null, 500, 1000); } public void Stop() { if (!_isStarted) return; _timer?.Dispose(); _timer = null; _isStarted = false; } private void SendTelemetry(object state) { var telemetry = new MockTelemetry { Time = DateTime.UtcNow }; EmittedCount++; Logger.LogVerbose($"Emitting telemetry #{EmittedCount} from {Name}"); TelemetryAvailable?.Invoke(this, new TelemetryAvailableEventArgs(telemetry, TelemetrySourceTypes.Streaming)); } public void Dispose() => Stop(); } }