MCPcopy Index your code
hub / github.com/perkeep/perkeep / foreachChunk

Method foreachChunk

pkg/schema/filereader.go:222–248  ·  view source on GitHub ↗
(ctx context.Context, fn func([]blob.Ref, BytesPart) error, path []blob.Ref)

Source from the content-addressed store, hash-verified

220}
221
222func (fr *FileReader) foreachChunk(ctx context.Context, fn func([]blob.Ref, BytesPart) error, path []blob.Ref) error {
223 path = append(path, fr.ss.BlobRef)
224 for _, bp := range fr.ss.Parts {
225 if bp.BytesRef.Valid() && bp.BlobRef.Valid() {
226 return fmt.Errorf("part in %v illegally contained both a blobRef and bytesRef", fr.ss.BlobRef)
227 }
228 if bp.BytesRef.Valid() {
229 ss, err := fr.getSuperset(ctx, bp.BytesRef)
230 if err != nil {
231 return err
232 }
233 subfr, err := ss.NewFileReader(fr.fetcher)
234 if err != nil {
235 return err
236 }
237 subfr.parent = fr
238 if err := subfr.foreachChunk(ctx, fn, path); err != nil {
239 return err
240 }
241 } else {
242 if err := fn(path, *bp); err != nil {
243 return err
244 }
245 }
246 }
247 return nil
248}
249
250func (fr *FileReader) rootReader() *FileReader {
251 if fr.parent != nil {

Callers 1

ForeachChunkMethod · 0.95

Calls 3

getSupersetMethod · 0.95
ValidMethod · 0.45
NewFileReaderMethod · 0.45

Tested by

no test coverage detected