pkg/gzip/reader.go (26 lines of code) (raw):

package gzip import ( gzip "github.com/klauspost/pgzip" "io" "os" ) type CompressReader struct { f *os.File pr *io.PipeReader gw *gzip.Writer } func NewCompressReader(f *os.File) *CompressReader { pr, pw := io.Pipe() gw := gzip.NewWriter(pw) c := &CompressReader{f: f, gw: gw, pr: pr} go func() { defer f.Close() defer pw.Close() defer gw.Close() io.Copy(gw, f) }() return c } func (r *CompressReader) Read(p []byte) (n int, err error) { return r.pr.Read(p) }