public void Initialize() { missionHistory = new List <object>(); tracker = new TextFileTracker(MissionLogFolder, mask); tracker.OnNewLine = (line) => { var data = MissionLogDataBuilder.GetData(line, MissionStartDateTime, GetCurrentEventNumber(), server); if (data != null && actionManager != null) { var header = data as MissionLogEventHeader; header.MissionFile = Path.GetFileName(tracker.CurrentFileName); AddHistory(data); actionManager.ProcessAction(data); } }; tracker.OnFileCreation = (filePath) => { if (Regex.IsMatch(filePath, @"missionReport\([\d+|\-|_]+\)\[0\].txt", RegexOptions.IgnoreCase)) { //New mission log ClearHistory(); StartNewMission(filePath); } }; }
public void ReadMissionHistory(string firstMissionLogFile = null) { //missionReport(2015-02-25_11-43-53)[0].txt if (firstMissionLogFile == null) { firstMissionLogFile = Util.GetNewestFilePath(MissionLogFolder, "missionReport(*)[0].txt"); if (String.IsNullOrWhiteSpace(firstMissionLogFile)) { Log.WriteError("Mission log not found in {0}", MissionLogFolder); return; } } else { firstMissionLogFile = this.With(x => Re.GetSubString(firstMissionLogFile, @"(missionReport\([\d+|\-|_]+\))\[\d+\].txt")) .With(x => String.Concat(x, "[0].txt")); } if (String.IsNullOrWhiteSpace(firstMissionLogFile)) { Log.WriteError("Malformed log filename {0}", firstMissionLogFile); return; } Log.WriteInfo("Reading events history from {0}", firstMissionLogFile); StartNewMission(firstMissionLogFile); if (MissionStartDateTime.Equals(default(DateTime))) { return; } var missionFiles = Util.GetFilesSortedByTime(MissionLogFolder, String.Format("missionReport({0})[*].txt", missionDateTimePrefix), true); var readException = Util.Try(() => { foreach (var file in missionFiles) { var fileInfo = new FileInfo(file); if (fileInfo.Length > 0 && !String.IsNullOrWhiteSpace(file)) { if (tracker != null) { tracker.AddFileOffset(file, fileInfo.Length); } var lines = File.ReadAllLines(file); if (lines != null) { foreach (var line in lines) { var data = MissionLogDataBuilder.GetData(line, MissionStartDateTime, GetCurrentEventNumber(), server); if (data is MissionLogEventHeader) { var header = data as MissionLogEventHeader; header.MissionFile = Path.GetFileName(file); AddHistory(data); } } } } } }); }