diff options
Diffstat (limited to 'pkg/util/io.go')
| -rw-r--r-- | pkg/util/io.go | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/pkg/util/io.go b/pkg/util/io.go deleted file mode 100644 index 5c489ed..0000000 --- a/pkg/util/io.go +++ /dev/null @@ -1,57 +0,0 @@ -package util - -import ( - "context" - "io" -) - -const bufferSize = 512 - -type ChannelReader struct { - Out <-chan []byte - Err <-chan error -} - -func NewChannelReader(ctx context.Context, reader io.Reader) ChannelReader { - outCh := make(chan []byte) - errCh := make(chan error) - - go func(in chan<- []byte, inErr chan<- error) { - defer close(in) - defer close(inErr) - buffer := make([]byte, 2 * bufferSize) - isD1 := true - d1 := buffer[:bufferSize] - d2 := buffer[bufferSize:] - outer: - for { - select { - case <-ctx.Done(): - inErr <- ctx.Err() - break outer - default: - var data []byte - if isD1 { - data = d1 - } else { - data = d2 - } - isD1 = !isD1 - - n, err := reader.Read(data) - if err != nil { - if err != io.EOF { - inErr <- err - } - break outer - } - in <- data[:n] - } - } - }(outCh, errCh) - - return ChannelReader{ - Out: outCh, - Err: errCh, - } -} |
