Skip to main content

PartFile

Struct PartFile 

Source
pub struct PartFile { /* private fields */ }
Expand description

Resumable on-disk part file with metadata slots and an exclusive lock.

Implementations§

Source§

impl PartFile

Source

pub fn open_or_create( target_path: &Path, url: &str, remote: &RemoteInfo, chunk_size: u64, hash: HashConfig, ) -> Result<Self>

Opens an existing compatible part file or creates a new one.

The target file must not already exist. The companion .part.lock file is locked for the lifetime of the returned value.

§Errors

Returns an error if the target exists, the part file is locked by another process, existing metadata is corrupt or incompatible, the part file size is unexpected, or filesystem operations fail.

Source

pub const fn metadata(&self) -> &PartMetadata

Returns the current part metadata.

Source

pub fn incomplete_chunks(&self) -> Vec<u64>

Returns indexes of chunks that still need to be downloaded.

Source

pub fn write_chunk(&mut self, index: u64, bytes: &[u8]) -> Result<()>

Writes and commits a complete chunk.

Already completed chunks are ignored.

§Errors

Returns an error if index is outside the chunk plan, bytes does not exactly match the chunk length, metadata cannot be updated, or I/O fails.

Source

pub fn write_chunk_bytes( &mut self, index: u64, chunk_offset: u64, bytes: &[u8], ) -> Result<()>

Writes bytes into a chunk without marking the chunk complete.

This supports streaming partial responses. Call Self::commit_chunk only after the full chunk has been written.

§Errors

Returns an error if the chunk index or write range is invalid, the byte length cannot fit in file offsets, or I/O fails.

Source

pub fn commit_chunk(&mut self, index: u64) -> Result<()>

Marks a previously written chunk complete and persists metadata.

Already completed chunks are ignored.

§Errors

Returns an error if index is outside the chunk plan, metadata generation overflows, metadata cannot be encoded, or I/O fails.

Source

pub fn finalize(self, target_path: &Path) -> Result<()>

Verifies and promotes the part file to the final target path.

This consumes the part file, truncates away metadata slots, renames the .part file to target_path, and releases the lock.

§Errors

Returns an error if the target exists, not all chunks are complete, hash verification fails, or filesystem operations fail.

Trait Implementations§

Source§

impl Debug for PartFile

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. 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<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<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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

Source§

type Output = T

Should always be Self
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.