Skip to main content

XorbObjectInfoV1

Struct XorbObjectInfoV1 

Source
pub struct XorbObjectInfoV1 {
Show 13 fields pub ident: XorbObjectIdent, pub version: u8, pub xorb_hash: MerkleHash, pub ident_hash_section: XorbObjectIdent, pub hashes_version: u8, pub chunk_hashes: Vec<MerkleHash>, pub ident_boundary_section: XorbObjectIdent, pub boundaries_version: u8, pub chunk_boundary_offsets: Vec<u32>, pub unpacked_chunk_offsets: Vec<u32>, pub num_chunks: u32, pub hashes_section_offset_from_end: u32, pub boundary_section_offset_from_end: u32, /* private fields */
}
Expand description

Info struct for XorbObject. This is stored at the end of the XORB.

Fields§

§ident: XorbObjectIdent

XORB identifier: “XETBLOB”

§version: u8

Format version, expected to be 1 right now.

§xorb_hash: MerkleHash

256-bits, 32-bytes, The XORB Hash of this Xorb.

§ident_hash_section: XorbObjectIdent

The hashes section XORB identifier: “XBLBHSH”

§hashes_version: u8

The version of the chunk hash section.

§chunk_hashes: Vec<MerkleHash>

Total number of chunks in the Xorb. Duplicated here. This only exists in the physical serialized layout. Merklehash for each chunk stored in the Xorb. Length of vector is num_chunks.

§ident_boundary_section: XorbObjectIdent

The boundaries and index metadata The identity for the metadata section; should be “XBLBMDT”

§boundaries_version: u8

The version of the boundary section.

§chunk_boundary_offsets: Vec<u32>

Total number of chunks in the Xorb. Duplicated here. This only exists in the physical serialized layout Byte offset marking the boundary of each chunk in physical layout including chunk header. Length of vector is num_chunks.

This vector only contains boundaries, so assumes the first chunk starts at offset 0. The final entry in vector is the total length of the chunks. See example below. chunk[n] are bytes in [chunk_boundary_offsets[n-1], chunk_boundary_offsets[n])

// ex.             chunks: [  0,   1,   2,   3 ]
// chunk_boundary_offsets: [ 100, 200, 300, 400]
§unpacked_chunk_offsets: Vec<u32>

The byte offsets marking the boundary of each chunk in uncompressed layout without header, assuming that each chunk gets unzipped and concatenated. Length of vector is num_chunks. This permits range queries on the contents of the xorb. The uncompressed length of chunk k can be determined by unpacked_chunk_offsets[k] - unpacked_chunk_offsets[k - 1].

§num_chunks: u32

Below this everything is fixed; these fields are in exactly the same place.

Total number of chunks in the Xorb. This is also duplicated in the serialization at the start of each section.

§hashes_section_offset_from_end: u32§boundary_section_offset_from_end: u32

Implementations§

Source§

impl XorbObjectInfoV1

Source

pub fn serialized_length(&self) -> usize

Source

pub fn serialize<W: Write>(&self, writer: &mut W) -> Result<usize, CoreError>

Serialize XorbObjectInfoV1 to provided Writer.

Assumes caller has set position of Writer to appropriate location for serialization.

Source

pub fn deserialize<R: Read>(reader: &mut R) -> Result<(Self, u32), CoreError>

Construct XorbObjectInfo object from Reader + Seek.

Expects metadata struct is found at end of Reader, written out in struct order.

Source

pub fn deserialize_only_boundaries_section<R: Read + Seek>( reader: &mut R, ) -> Result<(Self, u32), CoreError>

Construct XorbObjectInfo object from Reader + Seek.

Expects metadata struct is found at end of Reader, written out in struct order.

Source

pub async fn deserialize_async_v1<R: AsyncRead + Unpin>( reader: &mut R, ) -> Result<(Self, u32), CoreError>

Source

pub async fn deserialize_async<R: AsyncRead + Unpin>( reader: &mut R, version: u8, ) -> Result<(Self, u32), CoreError>

Construct XorbObjectInfo object from AsyncRead. assumes that the ident and version have already been read and verified.

verifies that the length of the footer data matches the length field at the very end of the buffer

Source

pub fn from_v0(src: XorbObjectInfoV0) -> Self

Source

pub fn from_v0_with_unpacked_chunk_offsets( src: XorbObjectInfoV0, unpacked_chunk_offsets: Vec<u32>, ) -> Self

Source

pub fn fill_in_boundary_offsets(&mut self)

Source

pub fn has_chunk_hashes(&self) -> bool

Trait Implementations§

Source§

impl Clone for XorbObjectInfoV1

Source§

fn clone(&self) -> XorbObjectInfoV1

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for XorbObjectInfoV1

Source§

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

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

impl Default for XorbObjectInfoV1

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl PartialEq for XorbObjectInfoV1

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · 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 Serialize for XorbObjectInfoV1

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for XorbObjectInfoV1

Source§

impl StructuralPartialEq for XorbObjectInfoV1

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

Source§

type Flavor = MayDrop

The DropFlavor that wraps T into Self
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

Source§

const WITNESS: W = W::MAKE

A constant of the type witness
Source§

impl<T> Identity for T
where T: ?Sized,

Source§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
Source§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

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

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<E> ResultError for E
where E: Send + Debug + Sync,

Source§

impl<T> ResultType for T
where T: Send + Clone + Sync + Debug,