/ Tools / TranscriptAnalysis / Receivers / BaseReceiver.cs
BaseReceiver.cs
 1  using CodexPlugin.OverwatchSupport;
 2  using Logging;
 3  using OverwatchTranscript;
 4  
 5  namespace TranscriptAnalysis.Receivers
 6  {
 7      public abstract class BaseReceiver<T> : IEventReceiver<T>
 8      {
 9          protected ILog log { get; private set; } = new NullLog();
10          protected OverwatchCodexHeader Header { get; private set; } = null!;
11          protected CsvWriter CsvWriter { get; private set; }
12          protected string SourceFilename { get; private set; } = string.Empty;
13  
14          public abstract string Name { get; }
15          public abstract void Receive(ActivateEvent<T> @event);
16          public abstract void Finish();
17  
18          protected BaseReceiver()
19          {
20              CsvWriter = new CsvWriter(log);
21          }
22  
23          public void Init(string sourceFilename, ILog log, OverwatchCodexHeader header)
24          {
25              this.log = new LogPrefixer(log, $"({Name}) ");
26              Header = header;
27              SourceFilename = sourceFilename;
28          }
29  
30          protected string? GetPeerId(int nodeIndex)
31          {
32              return GetIdentity(nodeIndex)?.PeerId;
33          }
34  
35          protected string? GetName(int nodeIndex)
36          {
37              return GetIdentity(nodeIndex)?.Name;
38          }
39  
40          protected CodexNodeIdentity? GetIdentity(int nodeIndex)
41          {
42              if (nodeIndex < 0) return null;
43              return Header.Nodes[nodeIndex];
44          }
45  
46          protected void Log(string msg)
47          {
48              log.Log(msg);
49          }
50      }
51  }