pub struct GcsStore { /* private fields */ }Expand description
A content-addressable store backed by a Google Cloud Storage bucket.
Construct one with GcsStore::connect (resolves Application Default
Credentials via the SDK).
Implementations§
Source§impl GcsStore
impl GcsStore
Sourcepub fn connect(store_url: &str) -> Result<Self, StoreError>
pub fn connect(store_url: &str) -> Result<Self, StoreError>
Connects to the gs://bucket/prefix store, resolving credentials via the
SDK’s Application Default Credentials chain.
The ring rustls crypto provider is installed as the process default
(idempotent) before the clients are built, keeping aws-lc-rs out of the
graph (see the module docs).
§Errors
StoreError::Backend if the tokio runtime cannot be created or the SDK
clients cannot be built (e.g. credentials cannot be resolved).
Sourcepub fn connect_with(
store_url: &str,
config: TransferConfig,
) -> Result<Self, StoreError>
pub fn connect_with( store_url: &str, config: TransferConfig, ) -> Result<Self, StoreError>
Like connect, but carries a TransferConfig for
concurrency / bandwidth control. The existing connect
delegates here with TransferConfig::default.
§Errors
StoreError::Backend if the tokio runtime cannot be created or the SDK
clients cannot be built (e.g. credentials cannot be resolved).
Sourcepub fn from_clients(
storage: Storage,
control: StorageControl,
location: GcsLocation,
) -> Result<Self, StoreError>
pub fn from_clients( storage: Storage, control: StorageControl, location: GcsLocation, ) -> Result<Self, StoreError>
Builds a store from already-configured SDK clients and a parsed location, owning a fresh tokio runtime for the sync bridge. Intended for tests.
§Errors
StoreError::Backend if the tokio runtime cannot be created.
Sourcepub fn with_meter(self, meter: Option<Arc<Meter>>) -> Self
pub fn with_meter(self, meter: Option<Arc<Meter>>) -> Self
Sourcepub fn location(&self) -> &GcsLocation
pub fn location(&self) -> &GcsLocation
The parsed bucket/prefix this store targets.
Sourcepub fn transfer_config(&self) -> &TransferConfig
pub fn transfer_config(&self) -> &TransferConfig
The TransferConfig (concurrency / bandwidth) this store was built
with. Consumed by the transfer loops in later gates.
Trait Implementations§
Source§impl Store for GcsStore
impl Store for GcsStore
Source§fn get_manifest(&self, id: &str) -> Result<Manifest, StoreError>
fn get_manifest(&self, id: &str) -> Result<Manifest, StoreError>
id’s sharded path,
verifying that its bytes hash back to id before returning it. Read moreSource§fn fetch_files(
&self,
manifest: &Manifest,
dest: &Path,
) -> Result<(), StoreError>
fn fetch_files( &self, manifest: &Manifest, dest: &Path, ) -> Result<(), StoreError>
manifest under dest, pulling each
referenced object from the store and reconstructing the directory tree
(files, directories, permissions) rooted at dest. Read moreSource§impl StreamStore for GcsStore
impl StreamStore for GcsStore
Source§fn has_object(&self, checksum: &str) -> Result<bool, StoreError>
fn has_object(&self, checksum: &str) -> Result<bool, StoreError>
true if an object with this content-address already exists in
the store. Read moreSource§fn get_object(&self, checksum: &str) -> Result<Vec<u8>, StoreError>
fn get_object(&self, checksum: &str) -> Result<Vec<u8>, StoreError>
checksum, verifying its bytes
hash (BLAKE3) back to checksum before returning them. Read moreSource§fn put_object(&self, checksum: &str, bytes: Vec<u8>) -> Result<(), StoreError>
fn put_object(&self, checksum: &str, bytes: Vec<u8>) -> Result<(), StoreError>
bytes hash
(BLAKE3) to checksum before storing anything. Read moreSource§fn put_manifest(&self, id: &str, manifest: &Manifest) -> Result<(), StoreError>
fn put_manifest(&self, id: &str, manifest: &Manifest) -> Result<(), StoreError>
id, verifying the manifest’s bytes hash
back to id before storing it. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for GcsStore
impl !UnwindSafe for GcsStore
impl Freeze for GcsStore
impl Send for GcsStore
impl Sync for GcsStore
impl Unpin for GcsStore
impl UnsafeUnpin for GcsStore
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request