pub struct FileHeader {
pub magic: [u8; 8],
pub format_type: FormatType,
pub version: FormatVersion,
pub feature_flags: u32,
pub reserved: [u8; 15],
}Expand description
File header with magic and version
Fields§
§magic: [u8; 8]Magic bytes (8)
format_type: FormatTypeFormat type (1 byte)
version: FormatVersionFormat version (4 bytes)
feature_flags: u32Feature flags (4 bytes)
reserved: [u8; 15]Reserved for future use (15 bytes)
Implementations§
Source§impl FileHeader
impl FileHeader
Sourcepub fn new(format_type: FormatType, version: FormatVersion) -> Self
pub fn new(format_type: FormatType, version: FormatVersion) -> Self
Create a new header for a format type
Sourcepub fn from_bytes(buf: &[u8]) -> Result<Self, VersionError>
pub fn from_bytes(buf: &[u8]) -> Result<Self, VersionError>
Parse from bytes
Sourcepub fn check_compatibility(
&self,
expected_type: FormatType,
current_version: FormatVersion,
) -> Result<CompatibilityResult, VersionError>
pub fn check_compatibility( &self, expected_type: FormatType, current_version: FormatVersion, ) -> Result<CompatibilityResult, VersionError>
Check compatibility with expected type and version
Sourcepub fn validate(
bytes: &[u8],
expected_type: FormatType,
current_version: FormatVersion,
) -> Result<(Self, CompatibilityResult), SochDBError>
pub fn validate( bytes: &[u8], expected_type: FormatType, current_version: FormatVersion, ) -> Result<(Self, CompatibilityResult), SochDBError>
Parse and validate a file header in a single fail-fast step.
This is the canonical entry point for opening any persisted SochDB
file that uses the unified FileHeader contract. It guarantees that:
- The magic bytes match
SOCHDB_MAGIC(else the file is not a SochDB file, or is truncated/corrupt). - The on-disk
FormatTypematches what the caller expects (else the caller is reading the wrong kind of file). - The on-disk version is compatible with
current_version(else the file was written by an incompatible — usually newer — release).
Unlike from_bytes + [check_compatibility], any
failure here is mapped to SochDBError::Corruption so callers across
the workspace can propagate a single, clear, fail-fast error instead of
silently misinterpreting bytes. A CompatibilityResult::NeedsMigration
outcome is returned as Ok so callers can run the migration pipeline;
an outright incompatible version is an error.
Trait Implementations§
Source§impl Clone for FileHeader
impl Clone for FileHeader
Source§fn clone(&self) -> FileHeader
fn clone(&self) -> FileHeader
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for FileHeader
impl RefUnwindSafe for FileHeader
impl Send for FileHeader
impl Sync for FileHeader
impl Unpin for FileHeader
impl UnsafeUnpin for FileHeader
impl UnwindSafe for FileHeader
Blanket Implementations§
impl<T> Allocation for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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