예제 #1
0
	}

	return util.ToErrors(errs)
}

func (cbs *CachedBlobStore) SaveState(c btncrypt.Cipher) error {
	errs := []error{}

	if err := cbs.bever.SaveStateToBlobstore(c, cbs.backendbs); err != nil {
		errs = append(errs, err)
	}

	return util.ToErrors(errs)
}

var _ = blobstore.BlobStore(&CachedBlobStore{})

func (cbs *CachedBlobStore) OpenReader(blobpath string) (io.ReadCloser, error) {
	bh, err := cbs.Open(blobpath, fl.O_RDONLY)
	if err != nil {
		return nil, err
	}
	return &struct {
		blobstore.OffsetReader // for io.Reader
		blobstore.BlobHandle   // for io.Closer
	}{
		blobstore.OffsetReader{bh, 0},
		bh,
	}, nil
}
예제 #2
0
	NumOpenReader int `json:num_open_reader`
	NumListBlobs  int `json:num_list_blobs`
	NumBlobSize   int `json:num_blob_size`
	NumRemoveBlob int `json:num_remove_blob`
}

type GCSBlobStore struct {
	projectName string
	bucketName  string
	flags       int
	tsrc        oauth2.TokenSource

	stats GCSBlobStoreStats
}

var _ = blobstore.BlobStore(&GCSBlobStore{})

func NewGCSBlobStore(projectName string, bucketName string, tsrc oauth2.TokenSource, flags int) (*GCSBlobStore, error) {
	return &GCSBlobStore{
		projectName: projectName,
		bucketName:  bucketName,
		flags:       flags,
		tsrc:        tsrc,
	}, nil
}

type Writer struct {
	gcsw *storage.Writer
}

func (bs *GCSBlobStore) newAuthedContext(basectx context.Context) context.Context {