Block Index#
-
class BaseBlockIndex#
Maps logical base-model blocks to their canonical physical KV pages.
The index is a lookup structure, not an owner: ResourcePools tracks page references and CacheRecordStore tracks the records that keep pages resident. The forward map supports longest-prefix matching; the reverse map removes the exact logical mapping when the last cache reference to a page is evicted. Lookup has no ownership or LRU side effects, and publication uses first-committer-wins semantics.
Public Functions
- BaseLookupResult lookupPrefix(
- std::vector<BlockHash> const &hashes
Return the longest contiguous prefix present in the index without changing recency or ownership.
-
std::optional<PageId> lookup(BlockHash const &hash) const#
-
BaseInsertResult insert(BlockHash hash, PageId proposedPage)#
First committer wins: an existing key returns its canonical page without replacing it.
-
void erasePage(PageId page)#
Remove the exact reverse mapping for a physical page; an absent page is a no-op.
-
size_t size() const noexcept#
-
class DraftPathIndex#
Maps EAGLE draft block boundaries to complete record-owned paths.
Unlike BaseBlockIndex, draft pages are not independently canonicalized. Every match identifies one CacheRecord so callers always consume a coherent path from one producer rather than stitching pages from unrelated records.
Public Functions
-
void insert(CacheRecord const &record)#
Register every paired full-block boundary in one EAGLE-capable record.
- std::optional<DraftPathMatch> lookupLongest(
- std::vector<BlockHash> const &hashes,
- int32_t maxBlockCount
Return the longest boundary at or below maxBlockCount without changing ownership or recency.
- bool contains(
- BlockHash const &terminalHash,
- DraftPathMatch const &match
-
void erase(CacheRecord const &record)#
Remove only the entries owned by record; a base-only record is a no-op.
-
void insert(CacheRecord const &record)#
-
struct BaseLookupResult#
-
struct BaseInsertResult#
-
struct DraftPathMatch#
One record candidate that owns a coherent draft path through pathBlockCount.