pub struct PartFile { /* private fields */ }Expand description
Resumable on-disk part file with metadata slots and an exclusive lock.
Implementations§
Source§impl PartFile
impl PartFile
Sourcepub fn open_or_create(
target_path: &Path,
url: &str,
remote: &RemoteInfo,
chunk_size: u64,
hash: HashConfig,
) -> Result<Self>
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.
Sourcepub const fn metadata(&self) -> &PartMetadata
pub const fn metadata(&self) -> &PartMetadata
Returns the current part metadata.
Sourcepub fn incomplete_chunks(&self) -> Vec<u64>
pub fn incomplete_chunks(&self) -> Vec<u64>
Returns indexes of chunks that still need to be downloaded.
Sourcepub fn write_chunk(&mut self, index: u64, bytes: &[u8]) -> Result<()>
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.
Sourcepub fn write_chunk_bytes(
&mut self,
index: u64,
chunk_offset: u64,
bytes: &[u8],
) -> Result<()>
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.
Sourcepub fn commit_chunk(&mut self, index: u64) -> Result<()>
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.
Sourcepub fn finalize(self, target_path: &Path) -> Result<()>
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.