pub struct ExecCtx<'a> {
pub fields: &'a ResolvedFields,
pub pulls: &'a ResolvedPulls,
pub wires: &'a dyn WireSource,
pub run_len: usize,
}Expand description
Cycle-time bundle handed to every dispenser via
OpDispenser::execute. Adapters use fields exclusively;
wrappers read pulls via stored handles.
Bundling rather than passing two parameters keeps the trait
surface forward-compatible for per-cycle component context,
streaming-capture hooks, and diagnostic taps (SRD 32
§“ExecCtx — cycle-time bundle”).
Fields§
§fields: &'a ResolvedFields§pulls: &'a ResolvedPulls§wires: &'a dyn WireSourceNarrow read surface for op-template name resolution against
the dispenser’s bound Polydat context (SRD-68 invariants I-1 + I-2).
During the SRD-68 migration this defaults to a no-op
NullWireSource for legacy call sites; adapters that own a
kernel construct via Self::with_wires.
run_len: usizeNumber of consecutive wire ordinals this invocation should
cover — the ACTUAL length of the cursor sub-run the executor
reserved for this op (base .. actual_end). Equals the op’s
crate::adapter::OpDispenser::rows_per_op except at the
cursor tail, where the final reservation is short: a batch op
reads exactly [cycle, cycle + run_len) so the partial tail
of M % N rows is inserted too — never over-read, never
dropped. Ordinary (non-batch) ops ignore it. Defaults to 1
for every legacy / test call site (single-row semantics).
Implementations§
Source§impl<'a> ExecCtx<'a>
impl<'a> ExecCtx<'a>
Sourcepub fn new(fields: &'a ResolvedFields, pulls: &'a ResolvedPulls) -> Self
pub fn new(fields: &'a ResolvedFields, pulls: &'a ResolvedPulls) -> Self
Legacy constructor — defaults wires to a no-op
crate::wires::NullWireSource. Used by call sites that
haven’t migrated to SRD-68’s dispenser-owned-kernel model
yet. Adapters that own a kernel handle should call
Self::with_wires instead.
Sourcepub fn with_wires(
fields: &'a ResolvedFields,
pulls: &'a ResolvedPulls,
wires: &'a dyn WireSource,
) -> Self
pub fn with_wires( fields: &'a ResolvedFields, pulls: &'a ResolvedPulls, wires: &'a dyn WireSource, ) -> Self
Construct an ExecCtx with an explicit WireSource — the
SRD-68 path. The wires value should be the per-fiber
kernel slot for the firing dispenser, narrowed to the
WireSource trait so adapter code never sees ScopeKernel
internals.
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for ExecCtx<'a>
impl<'a> !UnwindSafe for ExecCtx<'a>
impl<'a> Freeze for ExecCtx<'a>
impl<'a> Send for ExecCtx<'a>
impl<'a> Sync for ExecCtx<'a>
impl<'a> Unpin for ExecCtx<'a>
impl<'a> UnsafeUnpin for ExecCtx<'a>
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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