|
10 | 10 |
|
11 | 11 | namespace Analogy.LogViewer.Example |
12 | 12 | { |
13 | | - class OnlineExampleDataProvider : IAnalogyRealTimeDataProvider |
| 13 | + class OnlineExampleDataProvider : Analogy.LogViewer.Template.OnlineDataProvider |
14 | 14 | { |
15 | | - public string OptionalTitle { get; set; } |
16 | | - public Guid Id { get; set; } |
| 15 | + public override string? OptionalTitle { get; set; } |
| 16 | + public override Guid Id { get; set; } |
17 | 17 |
|
18 | | - public Image ConnectedLargeImage { get; set; } = null; |
19 | | - public Image ConnectedSmallImage { get; set; } = null; |
20 | | - public Image DisconnectedLargeImage { get; set; } = null; |
21 | | - public Image DisconnectedSmallImage { get; set; } = null; |
22 | | - public event EventHandler<AnalogyDataSourceDisconnectedArgs> OnDisconnected; |
23 | | - public event EventHandler<AnalogyLogMessageArgs> OnMessageReady; |
24 | | - public event EventHandler<AnalogyLogMessagesArgs> OnManyMessagesReady; |
25 | | - public async Task<bool> CanStartReceiving() => await Task.FromResult(true); |
| 18 | + public override async Task<bool> CanStartReceiving() => await Task.FromResult(true); |
26 | 19 |
|
27 | | - public IAnalogyOfflineDataProvider FileOperationsHandler { get; } |
28 | | - private Timer SimulateOnlineMessages; |
| 20 | + private readonly Timer SimulateOnlineMessages; |
29 | 21 | private int messageCount = 0; |
30 | | - readonly Random random = new Random(); |
31 | | - readonly Array values = Enum.GetValues(typeof(AnalogyLogLevel)); |
| 22 | + readonly Random _random = new Random(); |
| 23 | + readonly Array _values = Enum.GetValues(typeof(AnalogyLogLevel)); |
32 | 24 | private readonly List<string> processes = Process.GetProcesses().Select(p => p.ProcessName).ToList(); |
33 | 25 | private readonly string prefixMessage; |
34 | | - private Random rnd = new Random(); |
35 | | - private IAnalogyLogger Logger { get; set; } |
36 | | - public bool UseCustomColors { get; set; } = false; |
| 26 | + private readonly Random rnd = new Random(); |
37 | 27 |
|
38 | | - public IEnumerable<(string originalHeader, string replacementHeader)> GetReplacementHeaders() |
| 28 | + public override IEnumerable<(string originalHeader, string replacementHeader)> GetReplacementHeaders() |
39 | 29 | { |
40 | 30 | yield return ("Category", "Test"); |
41 | 31 | } |
42 | 32 |
|
43 | | - public (Color backgroundColor, Color foregroundColor) GetColorForMessage(IAnalogyLogMessage logMessage) |
| 33 | + public override (Color backgroundColor, Color foregroundColor) GetColorForMessage(IAnalogyLogMessage logMessage) |
44 | 34 | => logMessage.Level == AnalogyLogLevel.Unknown ? (Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256)), Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256))) : (Color.Empty, Color.Empty); |
45 | 35 | public OnlineExampleDataProvider(string prefix, Guid guid) |
46 | 36 | { |
47 | 37 | prefixMessage = prefix; |
48 | 38 | Id = guid; |
49 | 39 | OptionalTitle = $"Analogy Example: Real time Data Provider {prefix}"; |
| 40 | + SimulateOnlineMessages = new Timer(100); |
| 41 | + |
50 | 42 | } |
51 | | - public Task InitializeDataProviderAsync(IAnalogyLogger logger) |
| 43 | + public override async Task InitializeDataProviderAsync(IAnalogyLogger logger) |
52 | 44 | { |
53 | | - Logger = logger; |
54 | | - SimulateOnlineMessages = new Timer(100); |
| 45 | + await base.InitializeDataProviderAsync(logger); |
55 | 46 |
|
56 | 47 | SimulateOnlineMessages.Elapsed += (s, e) => |
57 | 48 | { |
58 | | - if (OnMessageReady == null) |
59 | | - return; |
60 | 49 | unchecked |
61 | 50 | { |
62 | | - |
63 | | - AnalogyLogLevel randomLevel = (AnalogyLogLevel)values.GetValue(random.Next(values.Length)); |
64 | | - string randomProcess = processes[random.Next(processes.Count)]; |
| 51 | + AnalogyLogLevel randomLevel = (AnalogyLogLevel)_values.GetValue(_random.Next(_values.Length))!; |
| 52 | + string randomProcess = processes[_random.Next(processes.Count)]; |
65 | 53 | AnalogyLogMessage m = new AnalogyLogMessage |
66 | 54 | { |
67 | | - Text = $"{prefixMessage}: Generated message #{messageCount++}" + string.Join(Environment.NewLine, Enumerable.Range(0, random.Next(1, 5)).Select(i => $"row {i}")), |
| 55 | + Text = $"{prefixMessage}: Generated message #{messageCount++}" + string.Join(Environment.NewLine, Enumerable.Range(0, _random.Next(1, 5)).Select(i => $"row {i}")), |
68 | 56 | Level = randomLevel, |
69 | 57 | Class = AnalogyLogClass.General, |
70 | 58 | Source = "Example", |
71 | 59 | User = Environment.UserName, |
72 | 60 | Module = randomProcess, |
73 | 61 | MachineName = Environment.MachineName, |
74 | 62 | ThreadId = Thread.CurrentThread.ManagedThreadId, |
75 | | - AdditionalInformation = new Dictionary<string, string>() { { "Random Column", random.Next(0, 10).ToString() }, { "Random Column 2", random.Next(0, 10).ToString() } } |
| 63 | + AdditionalInformation = new Dictionary<string, string>() { { "Random Column", _random.Next(0, 10).ToString() }, { "Random Column 2", _random.Next(0, 10).ToString() } } |
76 | 64 |
|
77 | 65 | }; |
78 | 66 |
|
79 | | - OnMessageReady?.Invoke(this, new AnalogyLogMessageArgs(m, Environment.MachineName, "Example", Id)); |
| 67 | + MessageReady(this, new AnalogyLogMessageArgs(m, Environment.MachineName, "Example", Id)); |
80 | 68 | } |
81 | 69 | }; |
82 | | - return Task.CompletedTask; |
83 | 70 | } |
84 | 71 |
|
85 | | - public void MessageOpened(AnalogyLogMessage message) |
| 72 | + public override Task StartReceiving() |
86 | 73 | { |
87 | | - //nop |
88 | | - } |
89 | | - |
90 | | - public async Task StartReceiving() |
91 | | - { |
92 | | - await InitializeDataProviderAsync(Logger); |
93 | | - SimulateOnlineMessages?.Start(); |
| 74 | + SimulateOnlineMessages.Start(); |
| 75 | + return Task.CompletedTask; |
94 | 76 | } |
95 | 77 |
|
96 | | - public Task StopReceiving() |
| 78 | + public override Task StopReceiving() |
97 | 79 | { |
98 | 80 | SimulateOnlineMessages?.Stop(); |
99 | | - OnDisconnected?.Invoke(this, new AnalogyDataSourceDisconnectedArgs("user disconnected", Environment.MachineName, Id)); |
| 81 | + Disconnected(this, new AnalogyDataSourceDisconnectedArgs("user disconnected", Environment.MachineName, Id)); |
100 | 82 | return Task.CompletedTask; |
101 | 83 | } |
102 | 84 | } |
|
0 commit comments