AppMetrics.DataReader.GetRecordsFromSession C# (CSharp) Method

GetRecordsFromSession() public static method

public static GetRecordsFromSession ( AppMetrics.Session session, TimePeriod period, bool filterRecords = true ) : List
session AppMetrics.Session
period TimePeriod
filterRecords bool
return List
        public static List<Record> GetRecordsFromSession(Session session, TimePeriod period, bool filterRecords = true)
        {
            var res = new List<Record>();

            using (var mutex = Utils.TryLockFile(session.FileName))
            using (var stream = new FileStream(session.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                var encoding = DetectEncoding(stream);

                if (filterRecords)
                {
                    while (true)
                    {
                        var startPos = stream.Position;
                        var line = ReadLine(stream, encoding);
                        if (line == null)
                            break;

                        var record = ParseLine(line);
                        if (!IsServiceMessage(record.Name))
                        {
                            stream.Position = startPos;
                            break;
                        }

                        record.SessionId = session.Id;
                        res.Add(record);
                    }

                    SkipOutdatedRecords(stream, encoding, period.StartTime);
                }

                using (var reader = new StreamReader(stream, encoding, true))
                {
                    while (true)
                    {
                        var line = reader.ReadLine();
                        if (line == null)
                            break;

                        var record = ParseLine(line);

                        if (filterRecords && record.Time > period.EndTime)
                            break;
                        if (filterRecords && record.Time < period.StartTime)
                            continue;

                        record.SessionId = session.Id;
                        res.Add(record);
                    }
                }
            }

            return res;
        }