pub struct Q42RangeVolumeSet<S: Q42RangeSource> { /* private fields */ }Expand description
Transport-neutral logical Q42 snapshot. Root and child volumes can be opened from HTTP/IPFS range sources just as from a local file.
Implementations§
Source§impl<S: Q42RangeSource> Q42RangeVolumeSet<S>
impl<S: Q42RangeSource> Q42RangeVolumeSet<S>
Sourcepub fn open_root_with_lexicon_factory<R, DF, LF>(
root: &Q42RangeVolume<R>,
data_factory: &DF,
lexicon_factory: &LF,
) -> Result<Self>where
R: Q42RangeSource,
DF: Q42SegmentRangeFactory<Source = S>,
LF: Q42LexiconRangeFactory<Source = S>,
pub fn open_root_with_lexicon_factory<R, DF, LF>(
root: &Q42RangeVolume<R>,
data_factory: &DF,
lexicon_factory: &LF,
) -> Result<Self>where
R: Q42RangeSource,
DF: Q42SegmentRangeFactory<Source = S>,
LF: Q42LexiconRangeFactory<Source = S>,
Open a root’s graph and lexicon shards as one transport-neutral range snapshot. This is the service-facing constructor for HTTP/IPFS callers.
pub fn open_root<R, F>(root: &Q42RangeVolume<R>, factory: &F) -> Result<Self>where
R: Q42RangeSource,
F: Q42SegmentRangeFactory<Source = S>,
pub fn manifest(&self) -> &Q42VolumeManifest
pub fn segments(&self) -> &[Q42RangeVolume<S>]
pub fn lexicon_segments(&self) -> &[Q42RangeVolume<S>]
Sourcepub fn attach_lexicon_segments<F>(&mut self, factory: &F) -> Result<()>
pub fn attach_lexicon_segments<F>(&mut self, factory: &F) -> Result<()>
Attach the root-manifested Q42LEX shards through the same exact-range transport used for graph segments. The separate closure keeps legacy data-only factories source-compatible while allowing IPFS locators for lexicon shards.
Sourcepub fn lookup_lexicon_hash_into(
&self,
hash: u64,
page: &mut [u8],
out: &mut [u8],
) -> Result<Option<usize>>
pub fn lookup_lexicon_hash_into( &self, hash: u64, page: &mut [u8], out: &mut [u8], ) -> Result<Option<usize>>
Resolve a term through the hash-routed lexicon shard. Callers supply page and text buffers, preserving the zero-heap range contract.
Sourcepub fn execute_query_page_into(
&self,
plan: Q42RangeQueryPlan,
cursor: Q42VolumeSetQueryCursor,
compressed: &mut [u8],
decoded: &mut [u8],
out: &mut [NQuin],
) -> Result<Q42VolumeSetQueryPage>
pub fn execute_query_page_into( &self, plan: Q42RangeQueryPlan, cursor: Q42VolumeSetQueryCursor, compressed: &mut [u8], decoded: &mut [u8], out: &mut [NQuin], ) -> Result<Q42VolumeSetQueryPage>
Scan one bounded result page across child segments. Bound-object patterns prune the segment list through the root manifest before the per-segment BIDX reader runs; other patterns stream segments in their stable manifest order.
Sourcepub fn segment_index_for_object(&self, object_hash: u64) -> Option<usize>
pub fn segment_index_for_object(&self, object_hash: u64) -> Option<usize>
Find the first segment whose object interval can contain object_hash.
Segment boundary overlap is legal for high-frequency values, so callers
must advance through adjoining intervals when a value spans segments.
pub fn segment_indices_for_object_into( &self, object_hash: u64, cursor: usize, out: &mut [usize], ) -> Result<Option<Q42SegmentMatchPage>>
Sourcepub fn verify_segment_hashes(&self, scratch: &mut [u8]) -> Result<()>
pub fn verify_segment_hashes(&self, scratch: &mut [u8]) -> Result<()>
Verify every immutable child digest using a caller-owned scratch buffer.
Auto Trait Implementations§
impl<S> Freeze for Q42RangeVolumeSet<S>
impl<S> RefUnwindSafe for Q42RangeVolumeSet<S>where
S: RefUnwindSafe,
impl<S> Send for Q42RangeVolumeSet<S>where
S: Send,
impl<S> Sync for Q42RangeVolumeSet<S>where
S: Sync,
impl<S> Unpin for Q42RangeVolumeSet<S>where
S: Unpin,
impl<S> UnsafeUnpin for Q42RangeVolumeSet<S>
impl<S> UnwindSafe for Q42RangeVolumeSet<S>where
S: UnwindSafe,
Blanket Implementations§
§impl<S, A> Aggregate<Result<S, Error>> for Awhere
A: Aggregate<S>,
impl<S, A> Aggregate<Result<S, Error>> for Awhere
A: Aggregate<S>,
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<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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