Skip to main content

PartMetadata

Struct PartMetadata 

Source
pub struct PartMetadata {
    pub generation: u64,
    pub url_hash: [u8; 32],
    pub content_len: u64,
    pub chunk_size: u64,
    pub chunk_count: u64,
    pub bitmap: ChunkBitmap,
    pub etag: Option<String>,
    pub last_modified: Option<String>,
    pub hash: HashConfig,
}
Expand description

Persisted state for a resumable part file.

Fields§

§generation: u64

Monotonic generation used to choose the newest metadata slot.

§url_hash: [u8; 32]

SHA-256 hash of the source URL.

§content_len: u64

Total content length in bytes.

§chunk_size: u64

Normalized chunk size in bytes.

§chunk_count: u64

Number of chunks in the resource.

§bitmap: ChunkBitmap

Completion bitmap for all chunks.

§etag: Option<String>

Stored ETag validator, when available.

§last_modified: Option<String>

Stored Last-Modified validator, when available.

§hash: HashConfig

Optional final-file hash verification configuration.

Implementations§

Source§

impl PartMetadata

Source

pub fn new( url_hash: [u8; 32], remote: &RemoteInfo, chunk_size: u64, hash: HashConfig, ) -> Result<Self>

Creates metadata for a new part file.

Passing 0 for chunk_size selects the default chunk size.

§Errors

Returns an error if the chunk size is invalid, validator headers are too large for the metadata slot, or the completion bitmap cannot be sized.

Source

pub fn completed_chunks(&self) -> u64

Returns the number of completed chunks.

Source

pub fn completed_bytes(&self) -> u64

Returns the number of bytes represented by completed chunks.

Source

pub fn all_complete(&self) -> bool

Returns whether every chunk is complete.

Source

pub fn ensure_compatible( &self, url_hash: [u8; 32], remote: &RemoteInfo, chunk_size: u64, hash: HashConfig, ) -> Result<()>

Verifies that existing metadata still matches a remote resource and caller configuration.

§Errors

Returns an error if the URL hash, content length, available validators, chunk size, or hash configuration differ from the stored metadata.

Source

pub fn encode_slot(&self, slot_size: u64) -> Result<Vec<u8>>

Encodes this metadata into a fixed-size metadata slot.

§Errors

Returns an error if slot_size is invalid for this metadata, if header values exceed their fixed capacities, or if supporting lengths overflow.

§Panics

Panics only if fixed metadata constants no longer fit their encoded integer fields.

Source

pub fn decode_slot(slot: &[u8]) -> Result<Self>

Decodes metadata from a fixed-size metadata slot.

§Errors

Returns an error if the slot is too short, has an unsupported version, fails CRC validation, has inconsistent lengths, or contains invalid UTF-8/header/hash data.

Trait Implementations§

Source§

impl Clone for PartMetadata

Source§

fn clone(&self) -> PartMetadata

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
Source§

impl Debug for PartMetadata

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Eq for PartMetadata

Source§

impl PartialEq for PartMetadata

Source§

fn eq(&self, other: &PartMetadata) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for PartMetadata

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> 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> 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> 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.