summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <pbuetow@mimecast.com>2021-12-04 11:44:46 +0000
committerPaul Buetow <pbuetow@mimecast.com>2021-12-04 11:44:46 +0000
commit6c12fc4b33049111ad6ddc3f62bf979f843fad73 (patch)
tree9ff70928e1da09b04b189da24a3eedcdbc8301a1
parent26afa5733888d80c00891af679775d7292169985 (diff)
refactor
-rw-r--r--internal/io/fs/readfile.go136
1 files changed, 0 insertions, 136 deletions
diff --git a/internal/io/fs/readfile.go b/internal/io/fs/readfile.go
index 9fbbad5..008111d 100644
--- a/internal/io/fs/readfile.go
+++ b/internal/io/fs/readfile.go
@@ -218,142 +218,6 @@ func (f *readFile) filter(ctx context.Context, ltx lcontext.LContext,
f.filterWithoutLContext(ctx, rawLines, lines, re)
}
-func (f *readFile) filterWithoutLContext(ctx context.Context, rawLines <-chan *bytes.Buffer,
- lines chan<- line.Line, re regex.Regex) {
-
- for {
- select {
- case line, ok := <-rawLines:
- f.updatePosition()
- if !ok {
- return
- }
- if filteredLine, ok := f.transmittable(line, len(lines), cap(lines), re); ok {
- select {
- case lines <- filteredLine:
- case <-ctx.Done():
- return
- }
- }
- }
- }
-}
-
-// Filter log lines matching a given regular expression, however with local grep context.
-func (f *readFile) filterWithLContext(ctx context.Context, ltx lcontext.LContext,
- rawLines <-chan *bytes.Buffer, lines chan<- line.Line, re regex.Regex) {
-
- // Scenario 1: Finish once maxCount hits found
- maxCount := ltx.MaxCount
- processMaxCount := maxCount > 0
- maxReached := false
-
- // Scenario 2: Print prev. N lines when current line matches.
- before := ltx.BeforeContext
- processBefore := before > 0
- var beforeBuf chan *bytes.Buffer
- if processBefore {
- beforeBuf = make(chan *bytes.Buffer, before)
- }
-
- // Screnario 3: Print next N lines when current line matches.
- after := 0
- processAfter := ltx.AfterContext > 0
-
- for lineBytesBuffer := range rawLines {
- f.updatePosition()
-
- if !re.Match(lineBytesBuffer.Bytes()) {
- f.updateLineNotMatched()
-
- if processAfter && after > 0 {
- after--
- myLine := line.Line{
- Content: lineBytesBuffer,
- SourceID: f.globID,
- Count: f.totalLineCount(),
- TransmittedPerc: 100,
- }
-
- select {
- case lines <- myLine:
- case <-ctx.Done():
- return
- }
-
- } else if processBefore {
- // Keep last num BeforeContext raw messages.
- select {
- case beforeBuf <- lineBytesBuffer:
- default:
- pool.RecycleBytesBuffer(<-beforeBuf)
- beforeBuf <- lineBytesBuffer
- }
- }
- continue
- }
-
- f.updateLineMatched()
-
- if processAfter {
- if maxReached {
- return
- }
- after = ltx.AfterContext
- }
-
- if processBefore {
- i := uint64(len(beforeBuf))
- for {
- select {
- case lineBytesBuffer := <-beforeBuf:
- myLine := line.Line{
- Content: lineBytesBuffer,
- SourceID: f.globID,
- Count: f.totalLineCount() - i,
- TransmittedPerc: 100,
- }
- i--
-
- select {
- case lines <- myLine:
- case <-ctx.Done():
- return
- }
- default:
- // beforeBuf is now empty.
- }
- if len(beforeBuf) == 0 {
- break
- }
- }
- }
-
- line := line.Line{
- Content: lineBytesBuffer,
- SourceID: f.globID,
- Count: f.totalLineCount(),
- TransmittedPerc: 100,
- }
-
- select {
- case lines <- line:
- if processMaxCount {
- maxCount--
- if maxCount == 0 {
- if !processAfter || after == 0 {
- return
- }
- // Unfortunatley we have to continue filter, as there might be more lines to print
- maxReached = true
- }
- }
- case <-ctx.Done():
- return
- }
- }
-}
-
func (f *readFile) transmittable(lineBytesBuffer *bytes.Buffer, length, capacity int,
re regex.Regex) (line.Line, bool) {