Skip to main content

LocalSource

Struct LocalSource 

Source
pub struct LocalSource {
    pub stores: Arc<ServerStores>,
    pub retained_from: u64,
}
Expand description

A source over another box’s stores in this process — its log for ranges, and a snapshot of its stores for a hole. What a restore from a twin’s data root reads, and what the tests follow a primary through.

Fields§

§stores: Arc<ServerStores>

The box read from.

§retained_from: u64

Pretend retention starts here (tests: a hole without rolling segments). 0 = the log’s own.

Trait Implementations§

Source§

impl LogSource for LocalSource

Source§

fn head(&self) -> Result<(u64, u64)>

(first_seq, head_seq) on the primary.
Source§

fn fetch(&self, from: u64, to: u64, max_bytes: u64) -> Result<Vec<Entry>>

Entries from..=to, at most about max_bytes of blob, never fewer than one when from <= to.
Source§

fn fetch_into( &self, from: u64, to: u64, max_bytes: u64, into: &mut dyn FrameSink, ) -> Result<()>

LogSource::fetch, streamed into into — what the follower calls (twin-streaming, 2026-10-06). Every source that reads a real log overrides it (GrpcSource off the wire, a bare Arc<Log> and LocalSource off the segments), so an entry is never whole in memory however large it is. The default gathers through fetch and hands each blob over as one piece: right for a scripted source, whose entries are already in its hands.
Source§

fn snapshot(&self, into: &mut Stager) -> Result<bool>

A consistent snapshot of the source’s stores, for a twin behind a retention hole, fed piece by piece into the twin’s staging area as it arrives. false = this source cannot make one (a bare log): the twin stops with snapshot-needed.
Source§

fn alternatives(&self) -> bool

Does the primary have another address to re-dial when this one keeps failing? (The tunnel’s and the utility network’s.) In-process sources have none.
Source§

fn head_and_identity(&self) -> Result<(u64, u64, Option<String>)>

(first_seq, head_seq, the source's log identity) — one call, because the identity has to come from the SAME answer as the numbers it qualifies. Asking twice would leave a window in which the numbers are one box’s and the name is another’s, which is the bug in a nicer shape. Read more
Source§

fn head_identity_generation(&self) -> Result<(u64, u64, Option<String>, u64)>

LogSource::head_and_identity and the source’s GENERATION (LOG_GENERATION), out of the same answer. 0 = none claimed: every in-process source, and a primary never restored or older than the field.

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<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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 = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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