Example #1
0
        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);
                }
            };
        }
Example #2
0
        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);
                                }
                            }
                        }
                    }
                }
            });
        }