cbs.usagestats.ObserveOpen(blobpath, flags) be, err := cbs.entriesmgr.OpenEntry(blobpath) if err != nil { return nil, err } return be.OpenHandle(cbs, flags) } func (cbs *CachedBlobStore) DumpEntriesInfo() []*CachedBlobEntryInfo { return cbs.entriesmgr.DumpEntriesInfo() } func (*CachedBlobStore) ImplName() string { return "CachedBlobStore" } var _ = blobstore.BlobLister(&CachedBlobStore{}) func (cbs *CachedBlobStore) ListBlobs() ([]string, error) { belister, ok := cbs.backendbs.(blobstore.BlobLister) if !ok { return nil, fmt.Errorf("Backendbs \"%v\" doesn't support listing blobs.", util.TryGetImplName(cbs.backendbs)) } belist, err := belister.ListBlobs() if err != nil { return nil, fmt.Errorf("Backendbs failed to ListBlobs: %v", err) } cachelist := cbs.entriesmgr.ListBlobs() cachelistset := make(map[string]struct{}) for _, blobpath := range cachelist { cachelistset[blobpath] = struct{}{}
ctx := bs.newAuthedContext(context.TODO()) rc, err := storage.NewReader(ctx, bs.bucketName, blobpath) if err != nil { if err == storage.ErrObjectNotExist { return nil, blobstore.ENOENT } return nil, err } return rc, nil } func (bs *GCSBlobStore) Flags() int { return bs.flags } var _ = blobstore.BlobLister(&GCSBlobStore{}) func (bs *GCSBlobStore) ListBlobs() ([]string, error) { bs.stats.NumListBlobs++ ctx := bs.newAuthedContext(context.TODO()) ret := make([]string, 0) q := &storage.Query{} for q != nil { res, err := storage.ListObjects(ctx, bs.bucketName, q) if err != nil { return nil, err } for _, o := range res.Results { blobpath := o.Name