pub struct B2Store { /* private fields */ }Expand description
A content-addressable store backed by Backblaze B2 via its S3-compatible
endpoint. Thin wrapper over S3Store configured with the B2 endpoint.
Implementations§
Source§impl B2Store
impl B2Store
Sourcepub fn connect(
store_url: &str,
endpoint_url: Option<&str>,
region: Option<&str>,
) -> Result<Self, StoreError>
pub fn connect( store_url: &str, endpoint_url: Option<&str>, region: Option<&str>, ) -> Result<Self, StoreError>
Connects to a b2://bucket/prefix store using Backblaze’s
S3-compatible API.
endpoint_url overrides the endpoint outright (handy for emulators or
an already-known regional host). When None, the endpoint is taken from
SNAPDIR_B2_TEST_ENDPOINT, and failing that derived from region (or
the SNAPDIR_B2_REGION / AWS_REGION env vars, else
[DEFAULT_B2_REGION]) as https://s3.<region>.backblazeb2.com.
Credentials and signing are handled by the standard AWS chain; the B2 application key id/secret map to the AWS access-key/secret-key.
§Errors
StoreError::Backend if the tokio runtime cannot be created or the
AWS configuration cannot be loaded (propagated from S3Store::connect).
Sourcepub fn connect_with(
store_url: &str,
endpoint_url: Option<&str>,
region: Option<&str>,
config: TransferConfig,
) -> Result<Self, StoreError>
pub fn connect_with( store_url: &str, endpoint_url: Option<&str>, region: Option<&str>, config: TransferConfig, ) -> Result<Self, StoreError>
Like connect, but carries a TransferConfig for
concurrency / bandwidth control. The config lives on the wrapped
S3Store; connect delegates here with
TransferConfig::default.
§Errors
StoreError::Backend if the tokio runtime cannot be created or the
AWS configuration cannot be loaded (propagated from
S3Store::connect_with).
Sourcepub fn from_s3_store(inner: S3Store) -> Self
pub fn from_s3_store(inner: S3Store) -> Self
Builds a B2Store from an already-configured S3Store (intended for
tests wiring a client at an emulator/B2 endpoint).
Sourcepub fn with_meter(self, meter: Option<Arc<Meter>>) -> Self
pub fn with_meter(self, meter: Option<Arc<Meter>>) -> Self
Attaches (or clears) an optional progress Meter. B2 has no transfer
path of its own — it delegates entirely to the wrapped S3Store — so
this forwards to S3Store::with_meter. None (the constructor default)
means zero recording and byte-identical behavior.
Sourcepub fn location(&self) -> &S3Location
pub fn location(&self) -> &S3Location
The parsed bucket/prefix this store targets (shared with S3Store).
Sourcepub fn transfer_config(&self) -> &TransferConfig
pub fn transfer_config(&self) -> &TransferConfig
The TransferConfig (concurrency / bandwidth) this store was built
with, carried on the wrapped S3Store. Consumed by the transfer loops
in later gates.
Trait Implementations§
Source§impl Store for B2Store
impl Store for B2Store
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 B2Store
impl StreamStore for B2Store
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 moreSource§fn objects_needed(
&self,
checksums: &[String],
) -> Result<Vec<String>, StoreError>
fn objects_needed( &self, checksums: &[String], ) -> Result<Vec<String>, StoreError>
checksums NOT present in the store, PRESERVING
INPUT ORDER. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for B2Store
impl !UnwindSafe for B2Store
impl Freeze for B2Store
impl Send for B2Store
impl Sync for B2Store
impl Unpin for B2Store
impl UnsafeUnpin for B2Store
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