1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
16
17 package azure
18
19 import (
20 "context"
21 "os"
22
23 "go4.org/syncutil"
24 "perkeep.org/pkg/blob"
25 "perkeep.org/pkg/blobserver"
26 )
27
28 var statGate = syncutil.NewGate(20)
29
30 func (sto *azureStorage) StatBlobs(ctx context.Context, blobs []blob.Ref, fn func(blob.SizedRef) error) (err error) {
31
32 return blobserver.StatBlobsParallelHelper(ctx, blobs, fn, statGate, func(br blob.Ref) (sb blob.SizedRef, err error) {
33 size, err := sto.azureClient.Stat(ctx, br.String(), sto.container)
34 if err == nil {
35 return blob.SizedRef{Ref: br, Size: uint32(size)}, nil
36 }
37 if err == os.ErrNotExist {
38 return sb, nil
39 }
40 return sb, err
41 })
42 }