Struct mz_persist::file::FileBlob
source · pub struct FileBlob {
base_dir: PathBuf,
tombstone: bool,
}
Expand description
Implementation of Blob backed by files.
Fields§
§base_dir: PathBuf
§tombstone: bool
Implementations§
source§impl FileBlob
impl FileBlob
sourcepub async fn open(config: FileBlobConfig) -> Result<Self, ExternalError>
pub async fn open(config: FileBlobConfig) -> Result<Self, ExternalError>
Opens the given location for non-exclusive read-write access.
fn blob_path(&self, key: &str) -> PathBuf
sourcefn replace_forward_slashes(key: &str) -> String
fn replace_forward_slashes(key: &str) -> String
For simplicity, FileBlob maintains a single flat directory of blobs. Because files can never use forward slashes in their names on Linux, even if escaped, we replace forward slashes with a Unicode character that looks substantially similar, so the file name is not interpreted as part of a directory structure. This is helpful for compatibility with clients who are expecting an S3-like interface that both use a flat hierarchy and allow forward slashes in file names.
(And apologies to the callers who really did want to use U+2215 code points in their filenames.)
fn restore_forward_slashes(key: &str) -> String
Trait Implementations§
source§impl Blob for FileBlob
impl Blob for FileBlob
source§fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<SegmentedBytes>, ExternalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<SegmentedBytes>, ExternalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Returns a reference to the value corresponding to the key.
source§fn list_keys_and_metadata<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
key_prefix: &'life1 str,
f: &'life2 mut (dyn FnMut(BlobMetadata<'_>) + Send + Sync),
) -> Pin<Box<dyn Future<Output = Result<(), ExternalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn list_keys_and_metadata<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
key_prefix: &'life1 str,
f: &'life2 mut (dyn FnMut(BlobMetadata<'_>) + Send + Sync),
) -> Pin<Box<dyn Future<Output = Result<(), ExternalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
List all of the keys in the map with metadata about the entry. Read more
source§fn set<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
value: Bytes,
) -> Pin<Box<dyn Future<Output = Result<(), ExternalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn set<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
value: Bytes,
) -> Pin<Box<dyn Future<Output = Result<(), ExternalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Inserts a key-value pair into the map. Read more
source§fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<usize>, ExternalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<usize>, ExternalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Remove a key from the map. Read more
source§fn restore<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<(), ExternalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn restore<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<(), ExternalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Restores a previously-deleted key to the map, if possible. Read more
Auto Trait Implementations§
impl Freeze for FileBlob
impl RefUnwindSafe for FileBlob
impl Send for FileBlob
impl Sync for FileBlob
impl Unpin for FileBlob
impl UnwindSafe for FileBlob
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
Mutably borrows from an owned value. Read more
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T
in a tonic::Request
Creates a shared type from an unshared type.
source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
source§fn into_rust(self) -> Result<R, TryFromProtoError>
fn into_rust(self) -> Result<R, TryFromProtoError>
See
RustType::from_proto
.source§fn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
See
RustType::into_proto
.source§impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
source§fn plus_equals(&mut self, rhs: &&'a S)
fn plus_equals(&mut self, rhs: &&'a S)
The method of
std::ops::AddAssign
, for types that do not implement AddAssign
.