Ejemplo n.º 1
0
        public async IAsyncEnumerable <LogEntry> ReadAsync(string fullFilePath)
        {
            StringBuilder sb       = new StringBuilder();
            LogEntry      logEntry = new LogEntry();

            await foreach (var line in _fileReader.ReadLinesAsync(fullFilePath))
            {
                _lineParser.ParseLine(line);

                if (_lineParser.HasTimeStamp)
                {
                    if (logEntry.TimeStamp > DateTime.MinValue)
                    {
                        logEntry.CallStack = sb.ToString();
                        sb = new StringBuilder();
                        yield return(logEntry);
                    }

                    logEntry = new LogEntry();

                    logEntry.TimeStamp = _lineParser.TimeStamp.AddMilliseconds(int.Parse(_lineParser.TimeStampMilliseconds));
                    logEntry.LogLevel  = _lineParser.LogLevel;
                    logEntry.Message   = _lineParser.Message;
                }
                else
                {
                    sb.AppendLine(line);
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Read file to get the data for parsing
        /// </summary>
        /// <returns>List of LineModel as Task</returns>
        public virtual async Task <List <LineModel> > ReadFile()
        {
            bool             isFirstLine = true;
            List <LineModel> timeData    = new List <LineModel>();

            using (FileStream fs = File.Open(fileToParse, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                using (BufferedStream bs = new BufferedStream(fs))
                {
                    using (StreamReader sr = new StreamReader(bs))
                    {
                        string line;
                        while ((line = await sr.ReadLineAsync()) != null)
                        {
                            if (isFirstLine)
                            {
                                isFirstLine = false;
                                continue;
                            }
                            if (!string.IsNullOrWhiteSpace(line))
                            {
                                var time = _lineParser.ParseLine(line);
                                timeData.Add(time);
                            }
                        }
                    }
                }
            }

            return(timeData);
        }
Ejemplo n.º 3
0
        private static void ViaRawStream2(ILineParser lineParser)
        {
            var sb = new StringBuilder();

            using (var reader = File.OpenRead(@"..\..\example-input.csv"))
            {
                try
                {
                    bool endOfFile = false;
                    while (reader.CanRead)
                    {
                        sb.Clear();

                        while (endOfFile == false)
                        {
                            var readByte = reader.ReadByte();

                            if (readByte == -1)
                            {
                                endOfFile = true;
                                break;
                            }

                            var character = (char)readByte;

                            if (character == '\r')
                            {
                                continue;
                            }

                            if (character == '\n')
                            {
                                break;
                            }

                            sb.Append(character);
                        }

                        if (endOfFile)
                        {
                            break;
                        }

                        lineParser.ParseLine(sb);
                    }
                }
                catch (Exception exception)
                {
                    throw new Exception("File could not be parsed", exception);
                }
            }
        }
Ejemplo n.º 4
0
        private static void ViaFileStreamWithStringBuilderWithCustomBufferSize(ILineParser lineParser, int bufferSize)
        {
            var sb = new StringBuilder();

            using (var reader = new FileStream(@"..\..\example-input.csv", FileMode.Open, FileAccess.Read, FileShare.None, bufferSize))
            {
                try
                {
                    bool endOfFile = false;
                    while (reader.CanRead)
                    {
                        sb.Clear();

                        while (endOfFile == false)
                        {
                            var readByte = reader.ReadByte();

                            if (readByte == -1)
                            {
                                endOfFile = true;
                                break;
                            }

                            var character = (char)readByte;

                            if (character == '\r')
                            {
                                continue;
                            }

                            if (character == '\n')
                            {
                                break;
                            }

                            sb.Append(character);
                        }

                        if (endOfFile)
                        {
                            break;
                        }

                        lineParser.ParseLine(sb);
                    }
                }
                catch (Exception exception)
                {
                    throw new Exception("File could not be parsed", exception);
                }
            }
        }
Ejemplo n.º 5
0
 private static void ViaStreamReader(ILineParser lineParser)
 {
     using (StreamReader reader = File.OpenText(@"..\..\example-input.csv"))
     {
         try
         {
             while (reader.EndOfStream == false)
             {
                 lineParser.ParseLine(reader.ReadLine());
             }
         }
         catch (Exception exception)
         {
             throw new Exception("File could not be parsed", exception);
         }
     }
 }
Ejemplo n.º 6
0
        public async Task <ValidationResult> Validate(string filePath)
        {
            List <ObjectData> objects = new List <ObjectData>();

            using (FileStream stream = File.OpenRead(filePath))
                using (StreamReader reader = new StreamReader(stream))
                {
                    while (!reader.EndOfStream)
                    {
                        string line = await reader.ReadLineAsync();

                        ObjectData pdfObject = mLineParser.ParseLine(line);
                        if (pdfObject != null)
                        {
                            objects.Add(pdfObject);
                        }
                    }
                }

            // TODO Get Xref table and validate.
            return(new ValidationResult(false, "bla bla"));
        }
Ejemplo n.º 7
0
        private static void ViaRawStream(ILineParser lineParser)
        {
            var sb = new StringBuilder();

            var charPool = ArrayPool <char> .Shared;

            using (var reader = File.OpenRead(@"..\..\example-input.csv"))
            {
                try
                {
                    bool endOfFile = false;
                    while (reader.CanRead)
                    {
                        sb.Clear();

                        while (endOfFile == false)
                        {
                            var readByte = reader.ReadByte();

                            if (readByte == -1)
                            {
                                endOfFile = true;
                                break;
                            }

                            var character = (char)readByte;

                            if (character == '\r')
                            {
                                continue;
                            }

                            if (character == '\n')
                            {
                                break;
                            }

                            sb.Append(character);
                        }

                        if (endOfFile)
                        {
                            break;
                        }

                        char[] rentedCharBuffer = charPool.Rent(sb.Length);

                        try
                        {
                            for (int index = 0; index < sb.Length; index++)
                            {
                                rentedCharBuffer[index] = sb[index];
                            }

                            lineParser.ParseLine(rentedCharBuffer);
                        }
                        finally
                        {
                            charPool.Return(rentedCharBuffer, true);
                        }
                    }
                }
                catch (Exception exception)
                {
                    throw new Exception("File could not be parsed", exception);
                }
            }
        }