pub struct Executor { /* private fields */ }Expand description
Concurrent scheduler-dispatch executor.
Implementations§
Source§impl Executor
impl Executor
pub fn new() -> Self
pub fn with_config(config: ExecutorConfig) -> Self
Sourcepub fn register_actor(
&self,
root_id: ProjectRootId,
ctx: Arc<AppContext>,
) -> bool
pub fn register_actor( &self, root_id: ProjectRootId, ctx: Arc<AppContext>, ) -> bool
Register an actor if one is not already present.
Existing actors keep their current context and scheduler state; subc
routing reuses them and reconfigures through the Mutating lane
rather than replacing the per-root AppContext. Returns true when a
new actor was inserted.
Sourcepub fn remove_actor(&self, root_id: &ProjectRootId)
pub fn remove_actor(&self, root_id: &ProjectRootId)
Remove an actor from scheduler state.
This is intentionally minimal: subc uses it only for a just-created
RouteBind actor whose configure failed before any route was installed, so
there is no in-flight work to quiesce. The removed AppContext is
dropped after releasing the scheduler lock so watcher/LSP teardown never
runs under that mutex.
Sourcepub fn cancel_queued_maintenance(&self, root_id: &ProjectRootId) -> usize
pub fn cancel_queued_maintenance(&self, root_id: &ProjectRootId) -> usize
Cancel maintenance jobs that have not started for one retained actor.
Interactive work and already-running maintenance remain untouched. Each cancelled job receives a normal completion so its caller can settle bookkeeping through the same path as an executed job.
Sourcepub fn actor_registered(&self, root_id: &ProjectRootId) -> bool
pub fn actor_registered(&self, root_id: &ProjectRootId) -> bool
Return whether scheduler state currently has an actor for this root.
Sourcepub fn actor_context(&self, root_id: &ProjectRootId) -> Option<Arc<AppContext>>
pub fn actor_context(&self, root_id: &ProjectRootId) -> Option<Arc<AppContext>>
Snapshot one actor context without retaining the scheduler lock while maintenance drops root-scoped resources.
Sourcepub fn actor_contexts(&self) -> Vec<Arc<AppContext>>
pub fn actor_contexts(&self) -> Vec<Arc<AppContext>>
Snapshot the registered actor contexts.
The returned Arcs keep contexts alive after the scheduler lock is
released, so callers can run teardown without holding executor state.
Sourcepub fn actor_entries(&self) -> Vec<(ProjectRootId, Arc<AppContext>)>
pub fn actor_entries(&self) -> Vec<(ProjectRootId, Arc<AppContext>)>
Snapshot the registered root ids paired with their actor contexts.
Sourcepub fn try_actor_entries(&self) -> Option<Vec<(ProjectRootId, Arc<AppContext>)>>
pub fn try_actor_entries(&self) -> Option<Vec<(ProjectRootId, Arc<AppContext>)>>
Non-blocking variant for the health path: the probe reply must stay cheap under any load, so it skips the actor list (reported as busy) rather than waiting on the scheduler state lock.
pub fn submit( &self, root_id: ProjectRootId, lane: Lane, request_id: String, job: ExecutorJob, ) -> CompletionHandle
pub fn submit_async( &self, root_id: ProjectRootId, lane: Lane, request_id: String, job: ExecutorJob, ) -> Receiver<Response>
Sourcepub fn submit_cancellable_async(
&self,
root_id: ProjectRootId,
lane: Lane,
request_id: String,
job: ExecutorJob,
) -> (Receiver<Response>, JobCancellation)
pub fn submit_cancellable_async( &self, root_id: ProjectRootId, lane: Lane, request_id: String, job: ExecutorJob, ) -> (Receiver<Response>, JobCancellation)
Submit an interactive job with an exact-job cancellation token.
The returned token cancels THIS job only (queued: removed and settled
with request_cancelled; running: signalled cooperatively). The job
observes the token via current_job_cancellation.
Sourcepub fn cancel_job(
&self,
root_id: &ProjectRootId,
token: &JobCancellation,
) -> JobCancelOutcome
pub fn cancel_job( &self, root_id: &ProjectRootId, token: &JobCancellation, ) -> JobCancelOutcome
Cancel one exact job by its token.
Queued jobs are removed and settled immediately; running jobs are signalled and return through their normal completion path at the next cooperative checkpoint. Jobs that sealed their commit finish normally.
pub fn submit_maintenance_async( &self, root_id: ProjectRootId, lane: Lane, request_id: String, job: ExecutorJob, ) -> Receiver<Response>
pub fn pool_size(&self) -> usize
pub fn actor_cap(&self) -> usize
pub fn read_cap(&self) -> usize
pub fn heavy_permits(&self) -> usize
pub fn interactive_reserve(&self) -> usize
pub fn maintenance_cap(&self) -> usize
pub fn try_dispatch_liveness_snapshot(&self) -> Option<DispatchLivenessSnapshot>
pub fn try_mutating_lane_snapshots(&self) -> Option<Vec<MutatingLaneSnapshot>>
pub fn try_mutating_job_state_label( &self, root_id: &ProjectRootId, request_id: &str, ) -> Option<&'static str>
Sourcepub fn try_bind_blocker_snapshot(
&self,
root_id: &ProjectRootId,
request_id: &str,
) -> Option<BindBlockerSnapshot>
pub fn try_bind_blocker_snapshot( &self, root_id: &ProjectRootId, request_id: &str, ) -> Option<BindBlockerSnapshot>
Snapshot RouteBind blockers without waiting on scheduler state. The subc health path uses this only for a delayed-bind breadcrumb, so contention is reported as scheduler busy rather than delaying the transport loop.
pub fn nonrunnable_dispatch_count(&self) -> usize
pub fn completion_counts(&self) -> (u64, u64)
pub fn actor_is_fatal(&self, root_id: &ProjectRootId) -> bool
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for Executor
impl !UnwindSafe for Executor
impl Freeze for Executor
impl Send for Executor
impl Sync for Executor
impl Unpin for Executor
impl UnsafeUnpin for Executor
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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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 moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more