pub struct FileReconstructor { /* private fields */ }Expand description
Reconstructs a file from its content-addressed chunks by downloading xorb blocks and writing the reassembled data to an output. Supports byte range requests and uses memory-limited buffering with adaptive prefetching.
Implementations§
Source§impl FileReconstructor
impl FileReconstructor
pub fn new(client: &Arc<dyn Client>, file_hash: MerkleHash) -> Self
pub fn with_byte_range(self, byte_range: FileRange) -> Self
pub fn with_progress_updater( self, progress_updater: Arc<ItemProgressUpdater>, ) -> Self
pub fn with_chunk_cache(self, cache: Arc<dyn ChunkCache>) -> Self
pub fn with_config(self, config: impl AsRef<ReconstructionConfig>) -> Self
Sourcepub fn with_buffer_semaphore(self, semaphore: Arc<AdjustableSemaphore>) -> Self
pub fn with_buffer_semaphore(self, semaphore: Arc<AdjustableSemaphore>) -> Self
Sets a custom buffer semaphore for controlling download buffer memory usage. This is primarily useful for testing scenarios where you want to control the timing of term fetches by limiting buffer capacity.
Sourcepub fn with_cancellation_token(self, token: CancellationToken) -> Self
pub fn with_cancellation_token(self, token: CancellationToken) -> Self
Replaces the default cancellation token with the given one. This is used when external code needs to share the same token for coordinated cancellation.
Sourcepub async fn reconstruct_to_file(
self,
path: &Path,
write_offset: Option<u64>,
truncate_file: bool,
) -> Result<u64>
pub async fn reconstruct_to_file( self, path: &Path, write_offset: Option<u64>, truncate_file: bool, ) -> Result<u64>
Reconstructs the file and writes it to the given path.
The file is opened with read/write access. When truncate_file is true
the file is truncated to the reconstructed length; when false the file
is left at its existing size, allowing multiple concurrent reconstructions
to write to different regions of the same file.
When write_offset is Some(offset), writing begins at that byte
position regardless of the byte range. When None, writing begins at
the byte range start (or 0 for a full-file reconstruction).
Sourcepub async fn reconstruct_to_writer<W: Write + Send + 'static>(
self,
writer: W,
) -> Result<u64>
pub async fn reconstruct_to_writer<W: Write + Send + 'static>( self, writer: W, ) -> Result<u64>
Reconstructs the file and writes it to the given writer.
The writer receives data starting from its current position (position 0 for a fresh writer), regardless of the byte range being reconstructed.
Sourcepub fn reconstruct_to_stream(self) -> DownloadStream
pub fn reconstruct_to_stream(self) -> DownloadStream
Reconstructs the file as a stream, returning a DownloadStream that
yields data chunks as they become available.
The reconstruction task is spawned immediately but pauses on an
internal tokio::sync::Notify until DownloadStream::start is
called (or the first DownloadStream::next /
DownloadStream::blocking_next).
§Panics
Panics if called outside a tokio runtime context (the constructor
uses tokio::spawn).
Sourcepub fn reconstruct_to_unordered_stream(self) -> UnorderedDownloadStream
pub fn reconstruct_to_unordered_stream(self) -> UnorderedDownloadStream
Reconstructs the file as an unordered stream, returning an
UnorderedDownloadStream that yields (offset, Bytes) chunks
in whatever order they complete.
The reconstruction task is spawned immediately but pauses on an
internal tokio::sync::Notify until
UnorderedDownloadStream::start is called (or the first
UnorderedDownloadStream::next /
UnorderedDownloadStream::blocking_next).
§Panics
Panics if called outside a tokio runtime context (the constructor
uses tokio::spawn).
Auto Trait Implementations§
impl Freeze for FileReconstructor
impl !RefUnwindSafe for FileReconstructor
impl Send for FileReconstructor
impl Sync for FileReconstructor
impl Unpin for FileReconstructor
impl UnsafeUnpin for FileReconstructor
impl !UnwindSafe for FileReconstructor
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> DropFlavorWrapper<T> for T
impl<T> DropFlavorWrapper<T> for T
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
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 more