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 }