pub struct Context { /* private fields */ }Expand description
A lightweight context for inline codegen that avoids the overhead of the full scheduled graph (no tokio channels, no scheduler queues, no loop machinery).
Exposes methods that operator-generated code calls on both
df (for prologues: request_task) and
context (for iterators: current_tick, schedule_subgraph, etc.).
Implementations§
Source§impl Context
impl Context
Sourcepub fn new(wake_state: Arc<WakeState>, metrics: Rc<DfirMetrics>) -> Self
pub fn new(wake_state: Arc<WakeState>, metrics: Rc<DfirMetrics>) -> Self
Create a new inline context with shared wake state and metrics.
Sourcepub fn request_task<Fut>(&mut self, future: Fut)
Available on crate feature tokio only.
pub fn request_task<Fut>(&mut self, future: Fut)
tokio only.Buffers an async task to be spawned later by Dfir::spawn_tasks.
Tasks are deferred because write_prologue runs during graph construction,
which may occur before a tokio LocalSet is entered. Buffered tasks are
drained and spawned via tokio::task::spawn_local at the start of
Dfir::run_tick. Tasks requested after that point remain buffered until
the next call to Dfir::run_tick.
Sourcepub fn current_tick(&self) -> TickInstant
pub fn current_tick(&self) -> TickInstant
Gets the current tick count.
Sourcepub fn metrics(&self) -> &Rc<DfirMetrics>
pub fn metrics(&self) -> &Rc<DfirMetrics>
Returns a reference to the runtime metrics.
Sourcepub fn schedule_subgraph(&self, is_external: bool)
pub fn schedule_subgraph(&self, is_external: bool)
Signals that external data has arrived and a new tick should be started.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for Context
impl !Send for Context
impl !Sync for Context
impl !UnwindSafe for Context
impl Freeze for Context
impl Unpin for Context
impl UnsafeUnpin for Context
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<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§impl<T> ToSinkBuild for T
impl<T> ToSinkBuild for T
§fn iter_to_sink_build(self) -> SendIterBuild<Self>
fn iter_to_sink_build(self) -> SendIterBuild<Self>
§fn stream_to_sink_build(self) -> SendStreamBuild<Self>where
Self: Sized + Stream,
fn stream_to_sink_build(self) -> SendStreamBuild<Self>where
Self: Sized + Stream,
SinkBuild] adaptor chain to send all items from self as a [Stream].