mirror of
https://github.com/mjl-/mox.git
synced 2024-12-28 01:13:47 +03:00
21 lines
458 B
Go
21 lines
458 B
Go
|
package moxio
|
||
|
|
||
|
import (
|
||
|
"io"
|
||
|
)
|
||
|
|
||
|
// LimitAtReader is a reader at that returns ErrLimit if reads would extend
|
||
|
// beyond Limit.
|
||
|
type LimitAtReader struct {
|
||
|
R io.ReaderAt
|
||
|
Limit int64
|
||
|
}
|
||
|
|
||
|
// ReadAt passes the read on to R, but returns an error if the read data would extend beyond Limit.
|
||
|
func (r *LimitAtReader) ReadAt(buf []byte, offset int64) (int, error) {
|
||
|
if offset+int64(len(buf)) > r.Limit {
|
||
|
return 0, ErrLimit
|
||
|
}
|
||
|
return r.R.ReadAt(buf, offset)
|
||
|
}
|