pub struct TaskRegistry { /* private fields */ }Expand description
Central scheduler and store for all IDE tasks.
Implementations§
Source§impl TaskRegistry
impl TaskRegistry
pub fn new() -> Self
Sourcepub fn schedule_task(
&mut self,
key: TaskKey,
trigger: TaskTrigger,
command: String,
) -> TaskId
pub fn schedule_task( &mut self, key: TaskKey, trigger: TaskTrigger, command: String, ) -> TaskId
Schedule a new task on key.queue.
Any existing running or queued task with the same TaskKey is
cancelled first (Rule 2 / Rule 4). If no task is currently running on
the queue the new task starts immediately (status → Running); otherwise
it is appended to the FIFO queue (status → Pending).
Returns the TaskId of the newly created task.
Sourcepub fn cancel(&mut self, task_id: TaskId) -> Option<TaskId>
pub fn cancel(&mut self, task_id: TaskId) -> Option<TaskId>
Cancel the task identified by task_id.
- If the task is Running its
CancellationTokenis triggered andstatusis set toTaskStatus::Cancelled. Therunningslot is cleared andstart_nextis called for the queue. - If the task is Pending it is removed from the queue and its status
is set to
TaskStatus::Cancelled. - If the task is already finished or cancelled this is a no-op.
Returns the TaskId of the next task that was started as a side-effect
of releasing the running slot (only possible when cancelling a Running
task that had a non-empty pending queue).
Sourcepub fn cancel_by_key(&mut self, key: &TaskKey) -> Option<TaskId>
pub fn cancel_by_key(&mut self, key: &TaskKey) -> Option<TaskId>
Sourcepub fn mark_running(&mut self, task_id: TaskId)
pub fn mark_running(&mut self, task_id: TaskId)
Transition a task from Pending to Running and record started_at.
Also registers the task in the running map for its queue.
Panics in debug builds if the task is not in Pending state.
Sourcepub fn mark_finished(
&mut self,
task_id: TaskId,
status: TaskStatus,
) -> Option<TaskId>
pub fn mark_finished( &mut self, task_id: TaskId, status: TaskStatus, ) -> Option<TaskId>
Record a terminal status for a finished task and start the next one.
If the task was already Cancelled the status is not overwritten —
a cancelled task stays cancelled regardless of the final process outcome.
Returns the TaskId of the next task that was started as a
side-effect, if the queue had a pending task waiting.
Sourcepub fn all_tasks(&self) -> impl Iterator<Item = &Task>
pub fn all_tasks(&self) -> impl Iterator<Item = &Task>
Returns an iterator over all tasks ever created (in arbitrary order).
Sourcepub fn task_count(&self) -> usize
pub fn task_count(&self) -> usize
Returns the total number of tasks ever created (running, pending, or finished).
Sourcepub fn get(&self, id: TaskId) -> Option<&Task>
pub fn get(&self, id: TaskId) -> Option<&Task>
Returns a reference to a task by ID, or None if it does not exist.
Sourcepub fn running_task(&self, queue: &TaskQueueId) -> Option<TaskId>
pub fn running_task(&self, queue: &TaskQueueId) -> Option<TaskId>
Returns the TaskId of the currently running task on queue, if any.
Sourcepub fn running_tasks(&self) -> impl Iterator<Item = (&TaskQueueId, &TaskId)>
pub fn running_tasks(&self) -> impl Iterator<Item = (&TaskQueueId, &TaskId)>
Returns an iterator over all currently running tasks (queue_id, task_id).
Sourcepub fn recently_finished_tasks(&self) -> impl Iterator<Item = TaskId> + '_
pub fn recently_finished_tasks(&self) -> impl Iterator<Item = TaskId> + '_
Returns an iterator over recently finished task IDs (newest last, max 5).
Only tasks with a terminal status (Success / Warning / Error / Cancelled)
are included. The caller can use TaskRegistry::get to read the full task record.
Sourcepub fn pending_tasks(&self, queue: &TaskQueueId) -> &[TaskId]
pub fn pending_tasks(&self, queue: &TaskQueueId) -> &[TaskId]
Returns the ordered pending task IDs for queue (front = next to run).
Trait Implementations§
Auto Trait Implementations§
impl Freeze for TaskRegistry
impl RefUnwindSafe for TaskRegistry
impl Send for TaskRegistry
impl Sync for TaskRegistry
impl Unpin for TaskRegistry
impl UnsafeUnpin for TaskRegistry
impl UnwindSafe for TaskRegistry
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> 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