Skip to main content

BlobStore

Struct BlobStore 

Source
pub struct BlobStore { /* private fields */ }

Implementations§

Source§

impl BlobStore

Source

pub fn new(protocol: &BlobsProtocol) -> Self

Source

pub fn new_with_address_lookup( protocol: &BlobsProtocol, address_lookup: MemoryLookup, ) -> Self

Source

pub const fn inner(&self) -> &BlobApi

Source

pub fn reader(&self, hash: impl Into<Hash>) -> BlobReader

Create a reader for the given hash.

The reader implements tokio::io::AsyncRead and tokio::io::AsyncSeek, allowing O(1)-memory streaming to any sink.

Source

pub async fn add_bytes(&self, data: impl AsRef<[u8]>) -> Result<Hash>

§Errors

Returns an error if the blob fails to be added to the store.

Source

pub async fn add_file(&self, path: impl AsRef<Path>) -> Result<Hash>

§Errors

Returns an error if the file fails to be read or added to the store.

Source

pub async fn add_file_ref(&self, path: impl AsRef<Path>) -> Result<Hash>

Add a file using a reference to its original path instead of copying its contents into the blob store.

The source file must remain available and unchanged for as long as the blob store may need to read this blob.

§Errors

Returns an error if the file fails to be read or added to the store.

Source

pub async fn export_to_path( &self, hash: Hash, destination: impl AsRef<Path>, ) -> Result<u64>

Export a complete blob to a temporary or caller-managed path.

Uses ExportMode::Copy — the blob stays in the store and a copy (or CoW reflink) is written to destination.

§Errors

Returns an error if the blob cannot be read or written.

Source

pub async fn export_to_path_with_mode( &self, hash: Hash, destination: impl AsRef<Path>, mode: ExportMode, ) -> Result<u64>

Export a complete blob with a specific ExportMode.

ExportMode::TryReference moves the blob’s internal file to destination and updates the store to track it externally, avoiding a copy. ExportMode::Copy leaves the blob in the store and writes a copy (or CoW reflink) to destination.

§Errors

Returns an error if the blob cannot be read or written.

Source

pub async fn has(&self, hash: Hash) -> Result<bool>

§Errors

Returns an error if the store cannot be queried.

Source

pub async fn stat(&self, hash: Hash) -> Result<BlobStatus>

Get metadata (size) for a blob.

§Errors

Returns an error if the blob is not found or the store cannot be queried.

Source

pub async fn get(&self, hash: Hash) -> Result<Bytes>

§Errors

Returns an error if the blob cannot be found or read.

Source

pub fn ticket(&self, endpoint: &Endpoint, hash: Hash) -> BlobTicket

Source

pub fn ticket_for_addr(&self, addr: EndpointAddr, hash: Hash) -> BlobTicket

Source

pub async fn pin(&self, name: impl AsRef<str>, hash: Hash) -> Result<()>

Pin a blob with a durable named tag so garbage collection cannot remove it.

§Errors

Returns an error if the tag cannot be written.

Source

pub async fn unpin(&self, name: impl AsRef<str>) -> Result<()>

Remove a durable pin from a blob.

§Errors

Returns an error if the tag cannot be removed.

Source

pub async fn is_pinned(&self, name: impl AsRef<str>, hash: Hash) -> Result<bool>

§Errors

Returns an error if the pin cannot be queried.

Source

pub async fn list_hashes(&self) -> Result<Vec<Hash>>

List all complete blobs currently in the store.

§Errors

Returns an error if the store cannot be queried.

Source

pub async fn list_pins( &self, prefix: impl AsRef<[u8]>, ) -> Result<Vec<(String, Hash)>>

List named pins whose names start with prefix.

§Errors

Returns an error if the store cannot be queried.

Source

pub async fn fetch( &self, endpoint: &Endpoint, ticket: &BlobTicket, ) -> Result<()>

§Errors

Returns an error if the blob cannot be fetched from the remote endpoint.

Source

pub async fn download_with_network( &self, endpoint: &Endpoint, ticket: &BlobTicket, ctx: &NetworkContext, ) -> Result<()>

Fetch a blob with network access control gating.

Checks via NetworkContext that the local node can access the blob through at least one network membership before downloading.

§Errors

Returns AccessDenied if the blob is not associated with any network the local node belongs to. Returns other errors if the fetch itself fails.

Source

pub async fn force_fetch( &self, endpoint: &Endpoint, ticket: &BlobTicket, ) -> Result<()>

Force-fetch a blob from a remote peer, re-downloading even if the blob is already present locally. Uses iroh-blobs’ low-level execute_get API which does not check local availability.

§Errors

Returns an error if the connection or download fails.

Source

pub async fn force_fetch_from_peer( &self, endpoint: &Endpoint, peer: &PublicKey, hash: Hash, ) -> Result<()>

Force-fetch a blob from a known peer, connecting by public key alone.

§Errors

Returns an error if the connection or download fails.

Trait Implementations§

Source§

impl Clone for BlobStore

Source§

fn clone(&self) -> BlobStore

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

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<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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> 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