/// <summary> /// Occurs after a line was read from the <see cref="TextReader"/> and returns a new <see cref="LogLine"/> object. /// </summary> /// <param name="line">The line read from the <see cref="TextReader"/>.</param> /// <param name="index">The index of the line read from the <see cref="TextReader"/>.</param> /// <returns>A new <see cref="LogLine"/> object from the string line and line index.</returns> protected override LogLine OnReadLine(string line, int index) { LogLineType lineType = LogLineTypeResolver.Resolve(line); LogLineTimeStampParserFunction timeStampParser = LogLineTimeStampParser.ParseTimeStamp; LogLineDataParserDictionary.TryGetValue(lineType, out LogLineDataParserFunction dataParser); return(new LazyLogLine(line, index, lineType, timeStampParser, dataParser)); }
/// <summary> /// Initializes a new instance of the <see cref="FahClientLogTextReader"/> class. /// </summary> /// <param name="textReader">The <see cref="TextReader"/> that provides line data as a string.</param> /// <param name="logLineTypeResolver">The <see cref="LogLineTypeResolver"/> used to resolve the <see cref="LogLineType"/> from a log line.</param> /// <param name="logLineDataParserDictionary">The <see cref="LogLineDataParserDictionary"/> that provides parsing functions for each <see cref="LogLineType"/>.</param> /// <param name="logLineTimeStampParser">The <see cref="LogLineTimeStampParser"/> used to parse time stamp information from a log line.</param> protected FahClientLogTextReader(TextReader textReader, LogLineTypeResolver logLineTypeResolver, LogLineDataParserDictionary logLineDataParserDictionary, LogLineTimeStampParser logLineTimeStampParser) : base(textReader) { LogLineTypeResolver = logLineTypeResolver ?? FahClientLogLineTypeResolver.Instance; LogLineDataParserDictionary = logLineDataParserDictionary ?? FahClientLogLineDataParserDictionary.Instance; LogLineTimeStampParser = logLineTimeStampParser ?? LogLineTimeStampParser.Instance; }