Exemplo n.º 1
0
        private static IEnumerable <SimDataLogEntry> ReadAllLogFiles(string pathToLogFileDirectory)
        {
            var directory = new DirectoryInfo(pathToLogFileDirectory);

            if (!directory.Exists)
            {
                return(Enumerable.Empty <SimDataLogEntry>());
            }

            var logEntries = new List <SimDataLogEntry>();

            var logFiles = directory.GetFiles($"*.{SimExt.LogFileExtension}");

            foreach (var logFile in logFiles)
            {
                try
                {
                    var lines = File.ReadAllLines(logFile.FullName);
                    logEntries.AddRange(lines.Select(l => SimDataLogEntry.Parse(l)).Somes());
                }
                catch (Exception ex)
                {
                    Logger.Log.Error(ex, $"Failed to read log file {logFile.FullName}");
                }
            }

            return(logEntries);
        }
Exemplo n.º 2
0
        private static SimDataLogEntry[] LoadToday(Simulation simulation)
        {
            var pathToSessionLogDirectory = simulation.GetPathToSessionLogDirectory();
            var directory = new DirectoryInfo(pathToSessionLogDirectory);

            if (!directory.Exists)
            {
                return(Array.Empty <SimDataLogEntry>());
            }
            var logFiles          = directory.GetFiles($"*.{SimExt.LogFileExtension}");
            var sessionLogEntries = new List <SimDataLogEntry>();

            foreach (var logFile in logFiles)
            {
                if (logFile.Name == SimExt.SessionLogFileName)
                {
                    continue;
                }

                try
                {
                    var lines      = File.ReadAllLines(logFile.FullName);
                    var logEntries = lines.Select(l => SimDataLogEntry.Parse(l)).Somes();
                    sessionLogEntries.AddRange(logEntries);
                }
                catch (Exception ex)
                {
                    Logger.Log.Error(ex, $"Failed to read log file {logFile.FullName}");
                }
            }
            return(sessionLogEntries.OrderBy(le => le.EnteredOn).ToArray());
        }
Exemplo n.º 3
0
        public void StartSession(Simulation simulation)
        {
            RequireTrue(_logEntries.Count == 0);

            _logIndex = 0;

            var pathToSessionLog = simulation.GetPathToSessionLog();

            if (File.Exists(pathToSessionLog))
            {
                var lines      = File.ReadAllLines(pathToSessionLog);
                var logEntries = lines.Select(l => SimDataLogEntry.Parse(l)).Somes();
                lock (_logEntriesSyncLock)
                {
                    _logEntries.AddRange(logEntries);
                    _logIndex = logEntries.Max(le => le.ID) + 1;
                }
            }

            _secondIntervalSubscription = _secondInterval.Subscribe(ObserveSecondInterval);
            _outputRequestSubscription  = _simData.OutputRequests.Subscribe(ObserveOutputRequest);
        }