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); }
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()); }
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); }