mirror of
https://codeberg.org/git-pages/git-pages.git
synced 2026-05-17 04:31:38 +00:00
26 lines
484 B
Go
26 lines
484 B
Go
package main
|
|
|
|
import "io"
|
|
|
|
type BoundedReader struct {
|
|
inner io.Reader
|
|
fuel int64
|
|
err error
|
|
}
|
|
|
|
func ReadAtMost(reader io.Reader, count int64, err error) io.Reader {
|
|
return &BoundedReader{reader, count, err}
|
|
}
|
|
|
|
func (reader *BoundedReader) Read(dest []byte) (count int, err error) {
|
|
if reader.fuel <= 0 {
|
|
return 0, reader.err
|
|
}
|
|
if int64(len(dest)) > reader.fuel {
|
|
dest = dest[0:reader.fuel]
|
|
}
|
|
count, err = reader.inner.Read(dest)
|
|
reader.fuel -= int64(count)
|
|
return
|
|
}
|