func newRangeReader()

in pkg/resultset/resultset.go [128:142]


func newRangeReader(ctx context.Context, set ResultSet, bucket obj.Bucket, off, length int64) (io.ReadCloser, error) {
	if off >= set.TotalByteLength() {
		return nil, io.EOF
	}
	block, blockOff := set.OffsetToBlockPos(off)
	obj := bucket.Object(set[block].Name)
	blockByteLen := set[block].BlockByteLength()
	if length < 0 {
		length = blockByteLen - blockOff
	} else if blockByteLen < blockOff+length {
		length = blockByteLen - blockOff
	}

	return obj.NewRangeReader(ctx, blockOff+int64(set[block].FirstDigitOffset), length)
}