pub struct IrohFileDistribution { /* private fields */ }Expand description
Iroh-based file distribution service
Distributes files/models using NetworkedIrohBlobStore with:
- Blob tokens stored in Automerge documents for discovery
- Direct P2P transfer via iroh-blobs protocol
- Status tracking via distribution documents
§Architecture
IrohFileDistribution
├─ NetworkedIrohBlobStore (P2P blob transfer)
└─ AutomergeStore (distribution metadata sync)
Distribution Flow:
1. Commander calls distribute(token, scope)
2. Distribution document created in Automerge with blob token
3. Document syncs to target nodes via CRDT sync
4. Target nodes see distribution doc, fetch blob via iroh-blobs
5. Target nodes update their status in distribution docImplementations§
Source§impl IrohFileDistribution
impl IrohFileDistribution
Sourcepub fn new(
blob_store: Arc<NetworkedIrohBlobStore>,
document_store: Arc<AutomergeStore>,
) -> Self
pub fn new( blob_store: Arc<NetworkedIrohBlobStore>, document_store: Arc<AutomergeStore>, ) -> Self
Create a new Iroh file distribution service
Sourcepub fn blob_store(&self) -> &Arc<NetworkedIrohBlobStore>
pub fn blob_store(&self) -> &Arc<NetworkedIrohBlobStore>
Get the blob store reference
Sourcepub fn document_store(&self) -> &Arc<AutomergeStore>
pub fn document_store(&self) -> &Arc<AutomergeStore>
Get the document store reference
Trait Implementations§
Source§impl FileDistribution for IrohFileDistribution
impl FileDistribution for IrohFileDistribution
Source§fn distribute<'life0, 'life1, 'async_trait>(
&'life0 self,
blob_token: &'life1 BlobToken,
scope: DistributionScope,
priority: TransferPriority,
) -> Pin<Box<dyn Future<Output = Result<DistributionHandle>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn distribute<'life0, 'life1, 'async_trait>(
&'life0 self,
blob_token: &'life1 BlobToken,
scope: DistributionScope,
priority: TransferPriority,
) -> Pin<Box<dyn Future<Output = Result<DistributionHandle>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Distribute blob to target nodes Read more
Source§fn status<'life0, 'life1, 'async_trait>(
&'life0 self,
handle: &'life1 DistributionHandle,
) -> Pin<Box<dyn Future<Output = Result<DistributionStatus>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn status<'life0, 'life1, 'async_trait>(
&'life0 self,
handle: &'life1 DistributionHandle,
) -> Pin<Box<dyn Future<Output = Result<DistributionStatus>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get current distribution status Read more
Source§fn cancel<'life0, 'life1, 'async_trait>(
&'life0 self,
handle: &'life1 DistributionHandle,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn cancel<'life0, 'life1, 'async_trait>(
&'life0 self,
handle: &'life1 DistributionHandle,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Cancel an in-progress distribution Read more
Source§fn wait_for_completion<'life0, 'life1, 'async_trait>(
&'life0 self,
handle: &'life1 DistributionHandle,
timeout: Duration,
) -> Pin<Box<dyn Future<Output = Result<DistributionStatus>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn wait_for_completion<'life0, 'life1, 'async_trait>(
&'life0 self,
handle: &'life1 DistributionHandle,
timeout: Duration,
) -> Pin<Box<dyn Future<Output = Result<DistributionStatus>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Wait for distribution to complete (or fail) Read more
Source§fn subscribe_progress<'life0, 'life1, 'async_trait>(
&'life0 self,
handle: &'life1 DistributionHandle,
) -> Pin<Box<dyn Future<Output = Result<Receiver<DistributionStatus>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn subscribe_progress<'life0, 'life1, 'async_trait>(
&'life0 self,
handle: &'life1 DistributionHandle,
) -> Pin<Box<dyn Future<Output = Result<Receiver<DistributionStatus>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Subscribe to distribution progress updates Read more
Auto Trait Implementations§
impl !Freeze for IrohFileDistribution
impl !RefUnwindSafe for IrohFileDistribution
impl Send for IrohFileDistribution
impl Sync for IrohFileDistribution
impl Unpin for IrohFileDistribution
impl UnsafeUnpin for IrohFileDistribution
impl !UnwindSafe for IrohFileDistribution
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> 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>
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