pub struct FileNodeStore { /* private fields */ }Expand description
Durable filesystem node store using content-addressed object layout.
Nodes are stored under nodes/sha256/aa/bb/<cid-hex> below the configured
root. Hints are stored under hints/<namespace-hex>/<key-hex>, and named
roots are stored under roots/<name-hex>. Node reads and writes verify that
bytes hash to the CID key.
Implementations§
Source§impl FileNodeStore
impl FileNodeStore
Sourcepub fn open(root: impl Into<PathBuf>) -> Result<Self, FileNodeStoreError>
pub fn open(root: impl Into<PathBuf>) -> Result<Self, FileNodeStoreError>
Open or create a filesystem node store rooted at root.
Sourcepub fn node_namespace_dir(&self) -> PathBuf
pub fn node_namespace_dir(&self) -> PathBuf
Return the namespace directory containing immutable node objects.
Sourcepub fn hint_namespace_dir(&self) -> PathBuf
pub fn hint_namespace_dir(&self) -> PathBuf
Return the namespace directory containing optional performance hints.
Sourcepub fn root_namespace_dir(&self) -> PathBuf
pub fn root_namespace_dir(&self) -> PathBuf
Return the namespace directory containing named root manifests.
Sourcepub fn path_for_cid(&self, cid: &Cid) -> PathBuf
pub fn path_for_cid(&self, cid: &Cid) -> PathBuf
Return the filesystem path for a content-addressed node.
Trait Implementations§
Source§impl Clone for FileNodeStore
impl Clone for FileNodeStore
Source§fn clone(&self) -> FileNodeStore
fn clone(&self) -> FileNodeStore
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for FileNodeStore
impl Debug for FileNodeStore
Source§impl ManifestStore for FileNodeStore
impl ManifestStore for FileNodeStore
Source§type Error = FileNodeStoreError
type Error = FileNodeStoreError
Error type for manifest operations.
Source§fn get_root(&self, name: &[u8]) -> Result<Option<RootManifest>, Self::Error>
fn get_root(&self, name: &[u8]) -> Result<Option<RootManifest>, Self::Error>
Load a named root manifest.
Source§fn put_root(
&self,
name: &[u8],
manifest: &RootManifest,
) -> Result<(), Self::Error>
fn put_root( &self, name: &[u8], manifest: &RootManifest, ) -> Result<(), Self::Error>
Unconditionally insert or replace a named root manifest.
Source§fn delete_root(&self, name: &[u8]) -> Result<(), Self::Error>
fn delete_root(&self, name: &[u8]) -> Result<(), Self::Error>
Delete a named root manifest. Deleting a missing name is not an error.
Source§fn compare_and_swap_root(
&self,
name: &[u8],
expected: Option<&RootManifest>,
new: Option<&RootManifest>,
) -> Result<ManifestUpdate, Self::Error>
fn compare_and_swap_root( &self, name: &[u8], expected: Option<&RootManifest>, new: Option<&RootManifest>, ) -> Result<ManifestUpdate, Self::Error>
Atomically update a named root if the current manifest matches
expected. Read moreSource§impl ManifestStoreScan for FileNodeStore
impl ManifestStoreScan for FileNodeStore
Source§fn list_roots(&self) -> Result<Vec<NamedRootManifest>, Self::Error>
fn list_roots(&self) -> Result<Vec<NamedRootManifest>, Self::Error>
List all durable named root manifests.
Source§impl NodeStoreScan for FileNodeStore
impl NodeStoreScan for FileNodeStore
Source§impl Store for FileNodeStore
impl Store for FileNodeStore
Source§type Error = FileNodeStoreError
type Error = FileNodeStoreError
Error type for storage operations
Source§fn put(&self, key: &[u8], value: &[u8]) -> Result<(), Self::Error>
fn put(&self, key: &[u8], value: &[u8]) -> Result<(), Self::Error>
Store key-value pair Read more
Source§fn batch(&self, ops: &[BatchOp<'_>]) -> Result<(), Self::Error>
fn batch(&self, ops: &[BatchOp<'_>]) -> Result<(), Self::Error>
Batch write operations (atomic if supported by backend) Read more
Source§fn batch_get(
&self,
keys: &[&[u8]],
) -> Result<HashMap<Vec<u8>, Vec<u8>>, Self::Error>
fn batch_get( &self, keys: &[&[u8]], ) -> Result<HashMap<Vec<u8>, Vec<u8>>, Self::Error>
Retrieve multiple keys in a single operation Read more
Source§fn batch_get_ordered(
&self,
keys: &[&[u8]],
) -> Result<Vec<Option<Vec<u8>>>, Self::Error>
fn batch_get_ordered( &self, keys: &[&[u8]], ) -> Result<Vec<Option<Vec<u8>>>, Self::Error>
Retrieve multiple keys in a single operation with order preservation Read more
Source§fn batch_get_ordered_unique(
&self,
keys: &[&[u8]],
) -> Result<Vec<Option<Vec<u8>>>, Self::Error>
fn batch_get_ordered_unique( &self, keys: &[&[u8]], ) -> Result<Vec<Option<Vec<u8>>>, Self::Error>
Retrieve unique keys in input order. Read more
Source§fn batch_put(&self, entries: &[(&[u8], &[u8])]) -> Result<(), Self::Error>
fn batch_put(&self, entries: &[(&[u8], &[u8])]) -> Result<(), Self::Error>
Store multiple key-value pairs in a single operation Read more
Source§fn supports_hints(&self) -> bool
fn supports_hints(&self) -> bool
Whether this store persists performance hints.
Source§fn get_hint(
&self,
namespace: &[u8],
key: &[u8],
) -> Result<Option<Vec<u8>>, Self::Error>
fn get_hint( &self, namespace: &[u8], key: &[u8], ) -> Result<Option<Vec<u8>>, Self::Error>
Retrieve an optional performance hint for a logical namespace and key. Read more
Source§fn put_hint(
&self,
namespace: &[u8],
key: &[u8],
value: &[u8],
) -> Result<(), Self::Error>
fn put_hint( &self, namespace: &[u8], key: &[u8], value: &[u8], ) -> Result<(), Self::Error>
Persist an optional performance hint for a logical namespace and key. Read more
Source§fn batch_put_with_hint(
&self,
entries: &[(&[u8], &[u8])],
namespace: &[u8],
key: &[u8],
value: &[u8],
) -> Result<(), Self::Error>
fn batch_put_with_hint( &self, entries: &[(&[u8], &[u8])], namespace: &[u8], key: &[u8], value: &[u8], ) -> Result<(), Self::Error>
Store content-addressed nodes and one hint atomically when supported.
Source§fn prefers_batch_reads(&self) -> bool
fn prefers_batch_reads(&self) -> bool
Whether this store has an efficient batched-read implementation. Read more
Source§impl TransactionalStore for FileNodeStore
impl TransactionalStore for FileNodeStore
Source§fn supports_transactions(&self) -> bool
fn supports_transactions(&self) -> bool
Whether this backend can atomically commit staged nodes and roots.
Source§fn commit_transaction(
&self,
node_writes: &[TransactionNodeWrite],
root_conditions: &[RootCondition],
root_writes: &[RootWrite],
) -> Result<TransactionUpdate, Error>
fn commit_transaction( &self, node_writes: &[TransactionNodeWrite], root_conditions: &[RootCondition], root_writes: &[RootWrite], ) -> Result<TransactionUpdate, Error>
Atomically validate root conditions, write nodes, and apply root writes.
Auto Trait Implementations§
impl Freeze for FileNodeStore
impl RefUnwindSafe for FileNodeStore
impl Send for FileNodeStore
impl Sync for FileNodeStore
impl Unpin for FileNodeStore
impl UnsafeUnpin for FileNodeStore
impl UnwindSafe for FileNodeStore
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
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 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>
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