github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/pkg/util/reader.go (about) 1 package util 2 3 import ( 4 "io" 5 ) 6 7 type sizeReader struct { 8 size int64 9 r io.Reader 10 } 11 12 type SizeReader interface { 13 io.Reader 14 Size() int64 15 } 16 17 // NewSizeReader returns an io.Reader that will have the number of bytes 18 // read from r available. 19 func NewSizeReader(r io.Reader) SizeReader { 20 return &sizeReader{r: r} 21 } 22 23 func (v *sizeReader) Read(p []byte) (int, error) { 24 n, err := v.r.Read(p) 25 v.size += int64(n) 26 return n, err 27 } 28 29 func (v *sizeReader) Size() int64 { 30 return v.size 31 }