private void ElapsedEventHandler() { if (_cancelationTokenSource.IsCancellationRequested) { return; } const int bufSize = 1000; byte[] buf = new byte[bufSize]; var length = _rollingFileReader.Read(buf, 0, bufSize); while (length > 0) { if (_processContent(buf, 0, length)) { _rollingFileReader.Ack(); } else { _rollingFileReader.RollBack(); break; } length = _rollingFileReader.Read(buf, 0, bufSize); } }
public override string ReadLine() { bool bContinue = true; while (bContinue) { bContinue = false; if (currentPos == currentLen) { currentLen = _reader.Read(_byteBuffer, 0, BUFFER_LENGTH); currentPos = 0; } if (currentPos == currentLen) { break; } int pos = -1; for (int i = currentPos; i != currentLen; ++i) { if (_byteBuffer[i] == '\n') //TODO Unix/Mac style { pos = i; break; } } char[] chars; if (pos == -1) { bContinue = true; chars = ASCIIEncoding.UTF8.GetChars(_byteBuffer, currentPos, currentLen - currentPos); _sb.Append(chars); currentPos = currentLen; } else { chars = ASCIIEncoding.UTF8.GetChars(_byteBuffer, currentPos, pos - currentPos); _sb.Append(chars); var line = _sb.ToString(); _sb.Clear(); currentPos = pos + 1;//TODO \n\r return(line); } } return(null); }