Skip to main content

PackManager

Struct PackManager 

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

Format-only coordinator for loaded pack and index files.

Object-domain indexes belong in a wrapper owned by the consuming crate.

Implementations§

Source§

impl PackManager

Source

pub fn new(packs_dir: PathBuf) -> PackManager

Source

pub fn reload(&mut self) -> Result<(), HeddleError>

Source

pub fn add_pack( &mut self, pack_path: PathBuf, index_path: PathBuf, ) -> Result<(), HeddleError>

Add a complete pack/index pair to the in-memory format index.

Source

pub fn needs_reload(&self) -> Result<bool, HeddleError>

Check whether the immutable pack set on disk differs from this snapshot.

Comparing only counts misses the decisive repack transition (one oldone replacement). Exact path comparison lets another FsStore recover after an atomic cutover even when cardinality is unchanged. Half-installed packs remain filtered by discover_pack_paths.

Source

pub fn reload_if_stale(&mut self) -> Result<bool, HeddleError>

Reload the pack list when the immutable pack set changed on disk.

Catches the multi-instance case: two FsStores back the same shared object dir (typical for lightweight thread worktrees, where the worktree’s repo opens its own store but points at the main repo’s .heddle/). When the worktree’s store installs a new pack, the main repo’s already-open pack_manager doesn’t know about it; without this get_blob/has_blob from the main repo would surface “object not found”.

Source

pub fn get_object( &self, id: &PackObjectId, ) -> Result<Option<(ObjectType, Vec<u8>)>, HeddleError>

Source

pub fn object_read_tier( &self, id: &PackObjectId, ) -> Result<Option<PackReadTier>, HeddleError>

Return the physical tier that will serve id.

When both layouts contain the same immutable object, lookup always selects the hot random-access record before a solid frame.

Source

pub fn get_object_from_pack( &self, pack_path: &Path, id: &PackObjectId, ) -> Result<Option<(ObjectType, Vec<u8>)>, HeddleError>

Read id from one specific discovered pack without building the cross-pack location index. The record identity remains validated by PackReader; object-domain consumers must validate decoded content.

Source

pub fn list_ids_from_pack( &self, pack_path: &Path, ) -> Result<Vec<PackObjectId>, HeddleError>

List the identities in one specific pack without building the cross-pack location index.

Source

pub fn get_hashed_object( &self, hash: &ContentHash, ) -> Result<Option<(ObjectType, Vec<u8>)>, HeddleError>

Source

pub fn get_hashed_object_type( &self, hash: &ContentHash, ) -> Result<Option<ObjectType>, HeddleError>

Look up the logical object type without decoding the object payload.

Source

pub fn get_hashed_object_bytes( &self, hash: &ContentHash, ) -> Result<Option<(ObjectType, Bytes)>, HeddleError>

Zero-copy variant of get_hashed_object. Returns bytes::Bytes views into the underlying pack mmap when the entry is non-delta and stored uncompressed; falls back to the standard decompress-into-Vec path otherwise.

Source

pub fn has_object(&self, hash: &ContentHash) -> bool

Source

pub fn get_hashed_object_size( &self, hash: &ContentHash, ) -> Result<Option<u64>, HeddleError>

Look up the uncompressed size of hash across all loaded packs without decompressing the payload. Returns Ok(None) when the object isn’t in any loaded pack.

Source

pub fn has_object_id(&self, id: &PackObjectId) -> bool

Source

pub fn list_all_hashes(&self) -> Result<Vec<ContentHash>, HeddleError>

List all object hashes across all packs.

Source

pub fn list_all_ids(&self) -> Result<Vec<PackObjectId>, HeddleError>

Source

pub fn pack_file_paths(&self) -> Vec<(&Path, &Path)>

Return paths of all pack files (for deletion during aggressive repack).

Source

pub fn pack_count(&self) -> usize

Source

pub fn packs_dir(&self) -> &Path

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

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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.
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