pub struct JobObjectTracker {
block_id: String,
inner: Mutex<Inner>,
}Fields§
§block_id: String§inner: Mutex<Inner>Inner state behind a mutex so a later kill_tree call from a
different thread is safe. The HANDLE itself is thread-safe per
Win32 docs, but the Drop impl still needs exclusive access.
Implementations§
Source§impl JobObjectTracker
impl JobObjectTracker
Sourcepub fn assign_inherent(&self, pid: u32) -> Result<(), String>
pub fn assign_inherent(&self, pid: u32) -> Result<(), String>
Inherent convenience wrapper — the canonical way callers should
use assign_process is via the TrackerHandle trait, which
dispatches across platforms. This stays inherent for internal
callers that hold a concrete JobObjectTracker.
pub fn new(block_id: &str) -> Result<Self, String>
Sourcefn assign_process_impl(&self, pid: u32) -> Result<(), String>
fn assign_process_impl(&self, pid: u32) -> Result<(), String>
Internal assignment primitive — called via the TrackerHandle
trait impl below. See the trait doc for semantics + race
window caveat.
fn query_pids(&self) -> Vec<u32>
Trait Implementations§
Source§impl Drop for JobObjectTracker
impl Drop for JobObjectTracker
Source§impl TrackerHandle for JobObjectTracker
impl TrackerHandle for JobObjectTracker
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.
impl Send for JobObjectTracker
impl Sync for JobObjectTracker
Auto Trait Implementations§
impl !Freeze for JobObjectTracker
impl RefUnwindSafe for JobObjectTracker
impl Unpin for JobObjectTracker
impl UnwindSafe for JobObjectTracker
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.