"io"
)
-func NewCountingWriter(w io.Writer, f func(uint64)) io.WriteCloser {
+func newCountingWriter(w io.Writer, f func(uint64)) io.WriteCloser {
return &countingReadWriter{
writer: w,
counter: f,
}
}
-func NewCountingReader(r io.Reader, f func(uint64)) io.ReadCloser {
+func newCountingReader(r io.Reader, f func(uint64)) io.ReadCloser {
return &countingReadWriter{
reader: r,
counter: f,
}
}
-func NewCountingReaderAtSeeker(r interface{}, f func(uint64)) *countingReaderAtSeeker {
- return &countingReaderAtSeeker{readerAtSeeker: readerAtSeeker{
- readSeeker: r.(io.ReadSeeker),
- readerAt: r.(io.ReaderAt),
- },
- counter: f,
- }
+func newCountingReaderAtSeeker(r readerAtSeeker, f func(uint64)) *countingReaderAtSeeker {
+ return &countingReaderAtSeeker{readerAtSeeker: r, counter: f}
}
type countingReadWriter struct {
return nil
}
-type readerAtSeeker struct {
- readSeeker io.ReadSeeker
- readerAt io.ReaderAt
+type readerAtSeeker interface {
+ io.ReadSeeker
+ io.ReaderAt
}
type countingReaderAtSeeker struct {
}
func (crw *countingReaderAtSeeker) Read(buf []byte) (int, error) {
- n, err := crw.readSeeker.Read(buf)
+ n, err := crw.readerAtSeeker.Read(buf)
crw.counter(uint64(n))
return n, err
}
func (crw *countingReaderAtSeeker) ReadAt(buf []byte, off int64) (int, error) {
- n, err := crw.readerAt.ReadAt(buf, off)
+ n, err := crw.readerAtSeeker.ReadAt(buf, off)
crw.counter(uint64(n))
return n, err
}
-
-func (crw *countingReaderAtSeeker) Seek(offset int64, whence int) (int64, error) {
- n, err := crw.readSeeker.Seek(offset, whence)
- return n, err
-}