Files
core/io/fs/sizer.go
2023-04-05 10:30:17 +02:00

37 lines
495 B
Go

package fs
import "io"
// Sizer interface can decorate a Reader
type Sizer interface {
// Size returns the size of the object
Size() int64
}
type ReadSizer interface {
io.Reader
Sizer
}
type readSizer struct {
r io.Reader
size int64
}
func NewReadSizer(r io.Reader, size int64) ReadSizer {
rs := &readSizer{
r: r,
size: size,
}
return rs
}
func (rs *readSizer) Read(p []byte) (int, error) {
return rs.r.Read(p)
}
func (rs *readSizer) Size() int64 {
return rs.size
}