mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-08-28 10:54:59 +00:00
24 lines
536 B
Go
24 lines
536 B
Go
package storage
|
|
|
|
import "io"
|
|
|
|
// trackingReader wraps a Reader and calls an custom "update" function
|
|
// whenever Read is called. Used by the storage layer to keep track of
|
|
// how much of the writelog has been read.
|
|
type trackingReader struct {
|
|
r io.Reader
|
|
update func(int, error)
|
|
}
|
|
|
|
func (tr *trackingReader) Read(p []byte) (n int, err error) {
|
|
n, err = tr.r.Read(p)
|
|
tr.update(n, err)
|
|
return n, err
|
|
}
|
|
|
|
func (tr *trackingReader) Close() error {
|
|
if closer, ok := tr.r.(io.Closer); ok {
|
|
return closer.Close()
|
|
}
|
|
return nil
|
|
}
|