private IEnumerable <MergedLogLineIndex> CreateIndices(IReadOnlyLogEntries entries, byte logFileIndex) { // DO NOT CALL EXTERNAL / VIRTUAL METHODS OF ANY KIND HERE if (entries == null) { return(Enumerable.Empty <MergedLogLineIndex>()); } var indices = new List <MergedLogLineIndex>(); foreach (var entry in entries) { var index = entry.GetValue(LogFileColumns.Index); var entryIndex = entry.GetValue(LogFileColumns.LogEntryIndex); var timestamp = entry.GetValue(LogFileColumns.Timestamp); if (index.IsValid && entryIndex .IsValid && //< Invalid values are possible if the file has been invalidated in between it sending us a change and us having retrieved the corresponding data timestamp != null) //< Not every line has a timestamp { indices.Add(new MergedLogLineIndex(index.Value, -1, //< We don't know the LogEntryIndex until insertion, hence we use a place-holder value here entryIndex.Value, logFileIndex, timestamp.Value)); } } return(indices); }
protected override ILogFile CreateFromContent(IReadOnlyLogEntries content) { var source = new InMemoryLogFile(content); var proxy = new LogFileProxy(_scheduler, TimeSpan.Zero, source); return(proxy); }
protected override ILogFile CreateFromContent(IReadOnlyLogEntries content) { var source = new InMemoryLogFile(content); var logFile = new MultiLineLogFile(_taskScheduler, source, TimeSpan.Zero); _taskScheduler.RunOnce(); return(logFile); }
protected override ILogFile CreateFromContent(IReadOnlyLogEntries content) { var source = new InMemoryLogFile(content); var merged = new MergedLogFile(_taskScheduler, TimeSpan.Zero, source); _taskScheduler.RunOnce(); return(merged); }
protected override ILogFile CreateFromContent(IReadOnlyLogEntries content) { var source = new InMemoryLogFile(content); var filter = new NoFilter(); var filtered = new FilteredLogFile(_taskScheduler, TimeSpan.Zero, source, filter, null); _taskScheduler.RunOnce(); return(filtered); }
protected override ILogFile CreateFromContent(IReadOnlyLogEntries content) { var fname = Path.GetTempFileName(); using (var stream = File.OpenWrite(fname)) using (var writer = new StreamWriter(stream)) { foreach (var logEntry in content) { writer.Write(logEntry.ToString()); writer.WriteLine(); } } var logFile = new TextLogFile(_scheduler, fname); _scheduler.RunOnce(); return(logFile); }
/// <summary> /// Initializes this object. /// </summary> /// <param name="content"></param> public InMemoryLogFile(IReadOnlyLogEntries content) : this(content.Columns) { AddRange(content); }
protected override ILogFile CreateFromContent(IReadOnlyLogEntries content) { var logFile = new InMemoryLogFile(content); return(logFile); }
protected override ILogFile CreateFromContent(IReadOnlyLogEntries content) { var source = new InMemoryLogFile(content); return(new NoThrowLogFile(source, "")); }
/// <summary> /// Creates a new log file with the given content. /// </summary> /// <param name="content"></param> /// <returns></returns> protected abstract ILogFile CreateFromContent(IReadOnlyLogEntries content);
public ReadOnlyLogEntriesEnumerator(IReadOnlyLogEntries logEntries) { _logEntries = logEntries; Reset(); }
public MergedLogFileSection(ILogFile logFile, LogFileSection section, IReadOnlyLogEntries entries) { LogFile = logFile; Section = section; Entries = entries; }
public MergedLogFileSection(ILogFile logFile, LogFileSection section) { LogFile = logFile; Section = section; Entries = null; }