pub struct VersionedRefTable<T: ?Sized> { /* private fields */ }Expand description
The refs write counter — the liveness source’s in-process
invalidation half (crate::liveness “the arbitration window”):
bumped on every CAS call through the composition’s refs impl, read
by the source’s arbitration consult. See VersionedRefTable.
The wave-6 refs rows carry no version counter; the wrapper is the counter’s home (the POC-O table-embedded counter’s shape, moved into the composition wiring — the tables stay row-homes).
Implementations§
Trait Implementations§
Source§impl<T> GitRefs for VersionedRefTable<T>
impl<T> GitRefs for VersionedRefTable<T>
Source§fn list_refs<'life0, 'life1, 'async_trait>(
&'life0 self,
repo: &'life1 RepoRecord,
) -> Pin<Box<dyn Future<Output = Result<Vec<RefLine>, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_refs<'life0, 'life1, 'async_trait>(
&'life0 self,
repo: &'life1 RepoRecord,
) -> Pin<Box<dyn Future<Output = Result<Vec<RefLine>, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Ref listing — advertisement + ls-refs response data (the full
set; ref-prefix filtering is wire-side, client-driven).
Source§fn apply_updates<'life0, 'life1, 'async_trait>(
&'life0 self,
repo: &'life1 RepoRecord,
updates: Vec<RefUpdate>,
atomic: bool,
) -> Pin<Box<dyn Future<Output = Result<Vec<RefOutcome>, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn apply_updates<'life0, 'life1, 'async_trait>(
&'life0 self,
repo: &'life1 RepoRecord,
updates: Vec<RefUpdate>,
atomic: bool,
) -> Pin<Box<dyn Future<Output = Result<Vec<RefOutcome>, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
One CAS transaction per call — the atomic-correctness home
(ADR-013 §7; the substrate row transaction — ADR-019 §2). Runs
the per-ref CAS; per-ref denials are outcomes (
RefOutcome),
not errors (a stale ref is a business result of receive-pack —
ADR-013 §7–8). Read moreSource§impl<T> RefRows for VersionedRefTable<T>
impl<T> RefRows for VersionedRefTable<T>
Source§fn snapshot<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<RefRowsSnapshot, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn snapshot<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<RefRowsSnapshot, StorageError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
The full canonical snapshot: all repos’ rows, name-sorted,
with the fingerprint over the canonical form.
Auto Trait Implementations§
impl<T> Freeze for VersionedRefTable<T>
impl<T> RefUnwindSafe for VersionedRefTable<T>
impl<T> Send for VersionedRefTable<T>
impl<T> Sync for VersionedRefTable<T>
impl<T> Unpin for VersionedRefTable<T>
impl<T> UnsafeUnpin for VersionedRefTable<T>
impl<T> UnwindSafe for VersionedRefTable<T>
Blanket Implementations§
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
Mutably borrows from an owned value. Read more