pub struct ObjectStore {
pub inner: Arc<dyn ObjectStore>,
pub use_constant_size_upload_parts: bool,
pub list_is_lexically_ordered: bool,
pub store_prefix: String,
/* private fields */
}Expand description
Wraps ObjectStore
Fields§
§inner: Arc<dyn ObjectStore>§use_constant_size_upload_parts: boolWhether to use constant size upload parts for multipart uploads. This is only necessary for Cloudflare R2.
list_is_lexically_ordered: boolWhether we can assume that the list of files is lexically ordered. This is true for object stores, but not for local filesystems.
store_prefix: StringThe datastore prefix that uniquely identifies this object store. It encodes information which usually cannot be found in the URL such as Azure account name. The prefix plus the path uniquely identifies any object inside the store.
Implementations§
Source§impl ObjectStore
impl ObjectStore
Sourcepub async fn from_uri(uri: &str) -> Result<(Arc<ObjectStore>, Path), Error>
pub async fn from_uri(uri: &str) -> Result<(Arc<ObjectStore>, Path), Error>
Parse from a string URI.
Returns the ObjectStore instance and the absolute path to the object.
This uses the default ObjectStoreRegistry to find the object store. To allow for potential re-use of object store instances, it’s recommended to create a shared ObjectStoreRegistry and pass that to Self::from_uri_and_params.
Sourcepub async fn from_uri_and_params(
registry: Arc<ObjectStoreRegistry>,
uri: &str,
params: &ObjectStoreParams,
) -> Result<(Arc<ObjectStore>, Path), Error>
pub async fn from_uri_and_params( registry: Arc<ObjectStoreRegistry>, uri: &str, params: &ObjectStoreParams, ) -> Result<(Arc<ObjectStore>, Path), Error>
Parse from a string URI.
Returns the ObjectStore instance and the absolute path to the object.
Sourcepub fn extract_path_from_uri(
registry: Arc<ObjectStoreRegistry>,
uri: &str,
) -> Result<Path, Error>
pub fn extract_path_from_uri( registry: Arc<ObjectStoreRegistry>, uri: &str, ) -> Result<Path, Error>
Extract the path component from a URI without initializing the object store.
This is a synchronous operation that only parses the URI and extracts the path, without creating or initializing any object store instance.
§Arguments
registry- The object store registry to get the provideruri- The URI to extract the path from
§Returns
The extracted path component
pub fn from_path(str_path: &str) -> Result<(Arc<ObjectStore>, Path), Error>
Use from_uri instead
Sourcepub fn local() -> ObjectStore
pub fn local() -> ObjectStore
Local object store.
Sourcepub fn memory() -> ObjectStore
pub fn memory() -> ObjectStore
Create a in-memory object store directly for testing.
Sourcepub fn is_local(&self) -> bool
pub fn is_local(&self) -> bool
Returns true if the object store pointed to a local file system.
pub fn is_cloud(&self) -> bool
pub fn scheme(&self) -> &str
pub fn block_size(&self) -> usize
pub fn max_iop_size(&self) -> u64
pub fn io_parallelism(&self) -> usize
Sourcepub fn io_tracker(&self) -> &IOTracker
pub fn io_tracker(&self) -> &IOTracker
Get the IO tracker for this object store
The IO tracker can be used to get statistics about read/write operations performed on this object store.
Sourcepub fn io_stats_snapshot(&self) -> IoStats
pub fn io_stats_snapshot(&self) -> IoStats
Get a snapshot of current IO statistics without resetting counters
Returns the current IO statistics without modifying the internal state. Use this when you need to check stats without resetting them.
Sourcepub fn io_stats_incremental(&self) -> IoStats
pub fn io_stats_incremental(&self) -> IoStats
Get incremental IO statistics since the last call to this method
Returns the accumulated statistics since the last call and resets the counters to zero. This is useful for tracking IO operations between different stages of processing.
Sourcepub async fn open(&self, path: &Path) -> Result<Box<dyn Reader>, Error>
pub async fn open(&self, path: &Path) -> Result<Box<dyn Reader>, Error>
Open a file for path.
Parameters
path: Absolute path to the file.
Sourcepub async fn open_with_size(
&self,
path: &Path,
known_size: usize,
) -> Result<Box<dyn Reader>, Error>
pub async fn open_with_size( &self, path: &Path, known_size: usize, ) -> Result<Box<dyn Reader>, Error>
Open a reader for a file with known size.
This size may either have been retrieved from a list operation or cached metadata. By passing in the known size, we can skip a HEAD / metadata call.
Sourcepub async fn create_local_writer(path: &Path) -> Result<ObjectWriter, Error>
pub async fn create_local_writer(path: &Path) -> Result<ObjectWriter, Error>
Create an ObjectWriter from local std::path::Path
Sourcepub async fn open_local(path: &Path) -> Result<Box<dyn Reader>, Error>
pub async fn open_local(path: &Path) -> Result<Box<dyn Reader>, Error>
Open an Reader from local std::path::Path
Sourcepub async fn put(
&self,
path: &Path,
content: &[u8],
) -> Result<WriteResult, Error>
pub async fn put( &self, path: &Path, content: &[u8], ) -> Result<WriteResult, Error>
A helper function to create a file and write content to it.
pub async fn delete(&self, path: &Path) -> Result<(), Error>
pub async fn copy(&self, from: &Path, to: &Path) -> Result<(), Error>
Sourcepub async fn read_dir(
&self,
dir_path: impl Into<Path>,
) -> Result<Vec<String>, Error>
pub async fn read_dir( &self, dir_path: impl Into<Path>, ) -> Result<Vec<String>, Error>
Read a directory (start from base directory) and returns all sub-paths in the directory.
pub fn list( &self, path: Option<Path>, ) -> Pin<Box<dyn Stream<Item = Result<ObjectMeta, Error>> + Send>>
Sourcepub fn read_dir_all<'a, 'b>(
&'a self,
dir_path: impl Into<&'b Path> + Send,
unmodified_since: Option<DateTime<Utc>>,
) -> Pin<Box<dyn Stream<Item = Result<ObjectMeta, Error>> + Send + 'a>>
pub fn read_dir_all<'a, 'b>( &'a self, dir_path: impl Into<&'b Path> + Send, unmodified_since: Option<DateTime<Utc>>, ) -> Pin<Box<dyn Stream<Item = Result<ObjectMeta, Error>> + Send + 'a>>
Read all files (start from base directory) recursively
unmodified_since can be specified to only return files that have not been modified since the given time.
Sourcepub async fn remove_dir_all(
&self,
dir_path: impl Into<Path>,
) -> Result<(), Error>
pub async fn remove_dir_all( &self, dir_path: impl Into<Path>, ) -> Result<(), Error>
Remove a directory recursively.
pub fn remove_stream<'a>( &'a self, locations: Pin<Box<dyn Stream<Item = Result<Path, Error>> + Send + 'a>>, ) -> Pin<Box<dyn Stream<Item = Result<Path, Error>> + Send + 'a>>
Sourcepub async fn read_one_all(&self, path: &Path) -> Result<Bytes, Error>
pub async fn read_one_all(&self, path: &Path) -> Result<Bytes, Error>
Convenience function to open a reader and read all the bytes
Sourcepub async fn read_one_range(
&self,
path: &Path,
range: Range<usize>,
) -> Result<Bytes, Error>
pub async fn read_one_range( &self, path: &Path, range: Range<usize>, ) -> Result<Bytes, Error>
Convenience function open a reader and make a single request
If you will be making multiple requests to the path it is more efficient to call Self::open
and then call Reader::get_range multiple times.
Source§impl ObjectStore
impl ObjectStore
pub fn new( store: Arc<dyn ObjectStore>, location: Url, block_size: Option<usize>, wrapper: Option<Arc<dyn WrappingObjectStore>>, use_constant_size_upload_parts: bool, list_is_lexically_ordered: bool, io_parallelism: usize, download_retry_count: usize, storage_options: Option<&HashMap<String, String>>, ) -> ObjectStore
Trait Implementations§
Source§impl Clone for ObjectStore
impl Clone for ObjectStore
Source§fn clone(&self) -> ObjectStore
fn clone(&self) -> ObjectStore
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ObjectStore
impl Debug for ObjectStore
Source§impl DeepSizeOf for ObjectStore
impl DeepSizeOf for ObjectStore
Source§fn deep_size_of_children(&self, context: &mut Context) -> usize
fn deep_size_of_children(&self, context: &mut Context) -> usize
Source§fn deep_size_of(&self) -> usize
fn deep_size_of(&self) -> usize
Auto Trait Implementations§
impl Freeze for ObjectStore
impl !RefUnwindSafe for ObjectStore
impl Send for ObjectStore
impl Sync for ObjectStore
impl Unpin for ObjectStore
impl UnsafeUnpin for ObjectStore
impl !UnwindSafe for ObjectStore
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.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> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.Source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.