Skip to main content

LocalBackend

Struct LocalBackend 

Source
pub struct LocalBackend { /* private fields */ }
Expand description

Local filesystem backend for file chunk storage and reconstruction metadata.

Implementations§

Source§

impl LocalBackend

Source

pub async fn upload_file( &self, file_id: &str, body: Bytes, repository_scope: Option<&RepositoryScope>, ) -> Result<UploadFileResponse, ServerError>

Stores a file version as deduplicated content chunks.

§Errors

Returns ServerError when file identifier validation, chunk persistence, or metadata persistence fails.

Source

pub async fn reconstruction( &self, file_id: &str, content_hash: Option<&str>, requested_range: Option<ByteRange>, repository_scope: Option<&RepositoryScope>, ) -> Result<FileReconstructionResponse, ServerError>

Loads reconstruction metadata for a file.

§Errors

Returns ServerError when the file identifier is invalid or the record is missing or unreadable.

Source

pub async fn file_total_bytes( &self, file_id: &str, content_hash: Option<&str>, repository_scope: Option<&RepositoryScope>, ) -> Result<u64, ServerError>

Loads the logical byte length for a file version.

§Errors

Returns ServerError when the file identifier is invalid or the record is missing or unreadable.

Source

pub async fn download_file( &self, file_id: &str, content_hash: Option<&str>, repository_scope: Option<&RepositoryScope>, ) -> Result<Vec<u8>, ServerError>

Reconstructs a file into a contiguous byte vector.

§Errors

Returns ServerError when metadata or chunk bytes cannot be read.

Source

pub async fn read_chunk(&self, hash_hex: &str) -> Result<Vec<u8>, ServerError>

Reads a stored chunk by hash.

§Errors

Returns ServerError when the hash is invalid or the chunk is missing.

Source

pub async fn read_chunk_for_file_version( &self, hash_hex: &str, file_id: &str, content_hash: &str, repository_scope: Option<&RepositoryScope>, ) -> Result<Vec<u8>, ServerError>

Reads a stored chunk only when it is reachable from a concrete file version.

§Errors

Returns ServerError when the hash, file identifier, or content hash are invalid, when the file version is missing, or when the chunk is not referenced by that version.

Source

pub async fn chunk_length(&self, hash_hex: &str) -> Result<u64, ServerError>

Loads the stored byte length for a chunk object.

§Errors

Returns ServerError when the hash is invalid or the chunk is missing.

Source§

impl LocalBackend

Source

pub async fn upload_xorb( &self, expected_hash: &str, body: Bytes, ) -> Result<XorbUploadResponse, ServerError>

Stores a raw xorb body under its content hash.

§Errors

Returns ServerError when the supplied hash is invalid, the body hash does not match, or persistence fails.

Source

pub async fn xorb_length(&self, hash_hex: &str) -> Result<u64, ServerError>

Loads the stored byte length for a serialized xorb object.

§Errors

Returns ServerError when the hash is invalid or the xorb is missing.

Source§

impl LocalBackend

Source

pub async fn new( root: PathBuf, public_base_url: String, chunk_size: NonZeroUsize, ) -> Result<Self, ServerError>

Creates a local backend and initializes its directory structure.

§Errors

Returns ServerError when the local directories cannot be created.

Source

pub async fn new_with_upload_parallelism( root: PathBuf, public_base_url: String, chunk_size: NonZeroUsize, upload_max_in_flight_chunks: NonZeroUsize, ) -> Result<Self, ServerError>

Creates a local backend with explicit upload chunk parallelism.

§Errors

Returns ServerError when the local directories cannot be created.

Source

pub fn public_base_url(&self) -> &str

Returns the public base URL used in generated download links.

Source

pub async fn ready(&self) -> Result<(), ServerError>

Verifies that local storage paths remain reachable.

§Errors

Returns ServerError when the local object store or metadata roots cannot be traversed.

Source

pub async fn stats(&self) -> Result<ServerStatsResponse, ServerError>

Returns local backend storage stats.

§Errors

Returns ServerError when local metadata cannot be traversed.

Trait Implementations§

Source§

impl Clone for LocalBackend

Source§

fn clone(&self) -> LocalBackend

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for LocalBackend

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ServiceExt for T

Source§

fn follow_redirects(self) -> FollowRedirect<Self>
where Self: Sized,

Follow redirect resposes using the Standard policy. Read more
Source§

fn override_request_header<M>( self, header_name: HeaderName, make: M, ) -> SetRequestHeader<Self, M>
where Self: Sized,

Insert a header into the request. Read more
Source§

fn append_request_header<M>( self, header_name: HeaderName, make: M, ) -> SetRequestHeader<Self, M>
where Self: Sized,

Append a header into the request. Read more
Source§

fn insert_request_header_if_not_present<M>( self, header_name: HeaderName, make: M, ) -> SetRequestHeader<Self, M>
where Self: Sized,

Insert a header into the request, if the header is not already present. Read more
Source§

fn override_response_header<M>( self, header_name: HeaderName, make: M, ) -> SetResponseHeader<Self, M>
where Self: Sized,

Insert a header into the response. Read more
Source§

fn append_response_header<M>( self, header_name: HeaderName, make: M, ) -> SetResponseHeader<Self, M>
where Self: Sized,

Append a header into the response. Read more
Source§

fn insert_response_header_if_not_present<M>( self, header_name: HeaderName, make: M, ) -> SetResponseHeader<Self, M>
where Self: Sized,

Insert a header into the response, if the header is not already present. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more