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

Method Fetch

pkg/blobserver/proxycache/proxycache.go:152–175  ·  view source on GitHub ↗
(ctx context.Context, b blob.Ref)

Source from the content-addressed store, hash-verified

150}
151
152func (sto *Storage) Fetch(ctx context.Context, b blob.Ref) (rc io.ReadCloser, size uint32, err error) {
153 rc, size, err = sto.cache.Fetch(ctx, b)
154 if err == nil {
155 sto.touch(blob.SizedRef{Ref: b, Size: size})
156 return
157 }
158 if err != os.ErrNotExist {
159 log.Printf("warning: proxycache cache fetch error for %v: %v", b, err)
160 }
161 rc, size, err = sto.origin.Fetch(ctx, b)
162 if err != nil {
163 return
164 }
165 all, err := io.ReadAll(rc)
166 if err != nil {
167 return
168 }
169 if _, err := blobserver.Receive(ctx, sto.cache, b, bytes.NewReader(all)); err != nil {
170 log.Printf("populating proxycache cache for %v: %v", b, err)
171 } else {
172 sto.touch(blob.SizedRef{Ref: b, Size: size})
173 }
174 return io.NopCloser(bytes.NewReader(all)), size, nil
175}
176
177func (sto *Storage) SubFetch(ctx context.Context, ref blob.Ref, offset, length int64) (io.ReadCloser, error) {
178 if sf, ok := sto.cache.(blob.SubFetcher); ok {

Callers

nothing calls this directly

Calls 5

touchMethod · 0.95
ReceiveFunction · 0.92
PrintfMethod · 0.80
ReadAllMethod · 0.80
FetchMethod · 0.65

Tested by

no test coverage detected