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();
}
}
|