pub struct StubTracker;Trait Implementations§
Source§impl TrackerHandle for StubTracker
impl TrackerHandle for StubTracker
Source§fn assign_process(&self, _pid: u32) -> Result<(), String>
fn assign_process(&self, _pid: u32) -> Result<(), String>
Add a freshly-spawned process to the tracked tree. Called by the
controller immediately after
tokio::process::Command::spawn.
Descendants created AFTER this call are caught automatically;
descendants created BEFORE (in the ~1ms race window) escape.
No-op in the stub impl — platforms without a real tracker
silently accept the PID and move on.Source§fn list_members(&self) -> Vec<TrackedProcess>
fn list_members(&self) -> Vec<TrackedProcess>
Enumerate the current members of this tracked tree. Read more
Source§fn kill_pid(&self, _pid: u32) -> bool
fn kill_pid(&self, _pid: u32) -> bool
Terminate a single process by PID, if it’s a member of this tree.
Returns
true if the PID was known and the kill was attempted.Source§fn confidence(&self) -> TrackingConfidence
fn confidence(&self) -> TrackingConfidence
Describes how confidently this platform tracks descendants.
Surfaced to the UI so the user can tell when tracking is
best-effort and escape-prone.
Source§fn set_below_normal_priority(&self, _on: bool) -> Result<(), String>
fn set_below_normal_priority(&self, _on: bool) -> Result<(), String>
Run every process in this tree at below-normal CPU priority (
on), or
back at normal. Descendants inherit it and cannot raise it themselves.
Windows only (a Job Object priority-class limit); a no-op elsewhere.
See docs/analysis/ANALYSIS_SRV_HTTP_STALL_IO_DRIVER_STARVATION_2026_09_26.md §8.3.Source§fn terminate(&self) -> bool
fn terminate(&self) -> bool
Ask every member to exit (SIGTERM): the graceful step a teardown
takes before
kill_tree. false where the
platform has no graceful signal for a whole tree yet (Windows), so
there is nothing to wait for.Source§fn member_count(&self) -> usize
fn member_count(&self) -> usize
How many processes the tree holds right now, the agent’s own CLI and
plumbing included: what a teardown waits to reach zero.
Source§fn member_pids(&self) -> Vec<u32>
fn member_pids(&self) -> Vec<u32>
The tree’s PIDs alone, plumbing included, without the per-process
enrichment
list_members does: what Tower reads every refresh
(SPEC_TOWER_TASK_MANAGER_PANE_2026_10_08.md §5).Source§fn cpu_time_ns(&self) -> Option<u64>
fn cpu_time_ns(&self) -> Option<u64>
CPU time the whole tree has used, in nanoseconds, including members
that have exited (a Job Object’s accounting, a cgroup’s
cpu.stat),
so a burst of short-lived build processes isn’t lost between two
samples. None where the platform keeps no such account.Source§fn spawn_target(&self) -> Option<PathBuf>
fn spawn_target(&self) -> Option<PathBuf>
Where a child about to be spawned joins the tree before it execs
(Linux: the cgroup’s
cgroup.procs), so nothing it forks can slip
out between spawn and assign_process.
None: only the after-spawn assignment.Auto Trait Implementations§
impl Freeze for StubTracker
impl RefUnwindSafe for StubTracker
impl Send for StubTracker
impl Sync for StubTracker
impl Unpin for StubTracker
impl UnsafeUnpin for StubTracker
impl UnwindSafe for StubTracker
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
Mutably borrows from an owned value. Read more
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
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.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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> ⓘ
Converts
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> ⓘ
Converts
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