aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Utilities/Tango.TelemetryTester.CLI/MockStreamingSource.cs
blob: 0ca058ec9911e23b3f1b6e332e9a3e8c145dea51 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System;
using System.Threading;
using Tango.Telemetry;

namespace Tango.TelemetryTester.CLI
{
    public class MockStreamingSource : ITelemetryStreamingSource
    {
        public string Name { get; }
        public event EventHandler<TelemetryAvailableEventArgs> 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();
    }
}