static async Task RunTimelinePostprocessor(LogSourcePostprocessorInput input) { string outputFileName = input.OutputFileName; var logProducer = LJT.Extensions.Read(new LJT.Reader(), input.LogFileName, null, input.ProgressHandler).Multiplex(); var profilingEvents = (new LJT.ProfilingTimelineEventsSource()).GetEvents(logProducer); var lister = EnumerableAsync.Merge( profilingEvents ).ToList(); Task[] leafs = new Task[] { lister, logProducer.Open(), }; await Task.WhenAll(leafs); TimelinePostprocessorOutput.SerializePostprocessorOutput( await lister, null, evtTrigger => TextLogEventTrigger.Make((LJT.Message)evtTrigger), input.InputContentsEtagAttr ).SaveToFileOrToStdOut(outputFileName); }
public static LogSourcePostprocessorInput AttachProgressHandler(this LogSourcePostprocessorInput input, Progress.IProgressAggregator progressAggregator, List <Progress.IProgressEventsSink> progressSinks) { var progressSink = progressAggregator.CreateProgressSink(); progressSinks.Add(progressSink); input.ProgressHandler += progressSink.SetValue; input.ProgressAggregator = progressAggregator; return(input); }
static async Task RunTimelinePostprocessor( LogSourcePostprocessorInput input, IModel postprocessingModel) { var logProducer = LJT.Extensions.Read(new LJT.Reader(postprocessingModel.TextLogParser), input.OpenLogFile, input.ProgressHandler).Multiplex(); var profilingEvents = (new LJT.ProfilingTimelineEventsSource()).GetEvents(logProducer); var lister = EnumerableAsync.Merge( profilingEvents ); var serialize = postprocessingModel.Timeline.CreatePostprocessorOutputBuilder() .SetEvents(lister) .SetTriggersConverter(evtTrigger => TextLogEventTrigger.Make((LJT.Message)evtTrigger)) .Build(input); await Task.WhenAll(serialize, logProducer.Open()); }
static async Task RunTimeSeriesPostprocessor( LogSourcePostprocessorInput input, IModel postprocessingModel ) { var logProducer = LJT.Extensions.Read(new LJT.Reader(postprocessingModel.TextLogParser), input.OpenLogFile, input.ProgressHandler).Multiplex(); ICombinedParser parser = postprocessingModel.TimeSeries.CreateParser(); var events = parser.FeedLogMessages(logProducer, m => m.Text, m => m.Text); await Task.WhenAll(events, logProducer.Open()); foreach (var ts in parser.GetParsedTimeSeries()) { ts.DataPoints = TimeSeries.Filters.RemoveRepeatedValues.Filter(ts.DataPoints).ToList(); } await postprocessingModel.TimeSeries.SavePostprocessorOutput(parser, input); }
static async Task RunTimelinePostprocessor( LogSourcePostprocessorInput input, IModel postprocessingModel) { string outputFileName = input.OutputFileName; var logProducer = LJT.Extensions.Read(new LJT.Reader(postprocessingModel.TextLogParser), input.LogFileName, input.ProgressHandler).Multiplex(); var profilingEvents = (new LJT.ProfilingTimelineEventsSource()).GetEvents(logProducer); var lister = EnumerableAsync.Merge( profilingEvents ); var serialize = postprocessingModel.Timeline.SavePostprocessorOutput( lister, null, evtTrigger => TextLogEventTrigger.Make((LJT.Message)evtTrigger), input ); await Task.WhenAll(serialize, logProducer.Open()); }
public static LogSourcePostprocessorInput SetTemplatesTracker(this LogSourcePostprocessorInput input, ICodepathTracker value) { input.TemplatesTracker = value; return(input); }
public static string GetLogFileNameHint(this LogSourcePostprocessorInput input) { return(GetLogFileNameHint(input.LogSource.Provider)); }