Skip to main content

ProcessIdentity

Struct ProcessIdentity 

Source
pub struct ProcessIdentity { /* private fields */ }
Expand description

A PID paired with a token that changes when the process at that PID does.

Serializable because its whole reason to exist is being written to the attempt journal and read back after a restart. The token is opaque: its shape is documented at the module level for diagnostics, but nothing should parse it. Comparison — not interpretation — is the operation it supports.

Implementations§

Source§

impl ProcessIdentity

Source

pub fn resolve(pid: u32) -> Result<Self, ProcessError>

Reads the identity of a live process.

§Errors

ProcessError::NoSuchProcess when nothing holds the PID, and ProcessError::Identity when the operating system refuses to answer — a process owned by another account, for instance. The two are separate because “gone” is a normal lifecycle answer and “refused” is a misconfiguration.

Source

pub fn of_current_process() -> Result<Self, ProcessError>

The identity of the calling process.

§Errors

As ProcessIdentity::resolve, though a process can always see itself in practice.

Source

pub const fn pid(&self) -> u32

The PID. Recorded in RunnerAttempt::process_id and shown in the UI; never used on its own to decide whether a process is ours.

Source

pub fn start_token(&self) -> &str

The opaque start token. Exposed for diagnostics only.

Source

pub fn recheck(&self) -> Result<Adoption, ProcessError>

Re-resolves this identity against the machine as it is now.

§Errors

ProcessError::Identity when the operating system refuses to answer. A PID that resolves to nothing is Adoption::Gone, not an error.

Source

pub fn terminate(&self, grace: Duration) -> Result<Termination, ProcessError>

Stops the process this identity names, and nothing else.

Re-checks the identity immediately before signalling. That check is the difference between “terminate the runner recorded in the journal” and “terminate whatever now holds PID 4312”, and it is why the recycled case returns Termination::RefusedPidRecycled rather than proceeding.

grace applies only where the platform has a polite stop to offer: on Unix the process is sent SIGTERM, given grace to exit, and then SIGKILLed. Windows has no console-independent equivalent, so the process is terminated immediately and grace is ignored — stated here rather than emulated, because a fake grace period that never actually asks politely is worse than no grace period.

§Errors

ProcessError::Control when signalling fails for a reason other than the process having already exited.

Trait Implementations§

Source§

impl Clone for ProcessIdentity

Source§

fn clone(&self) -> ProcessIdentity

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ProcessIdentity

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for ProcessIdentity

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for ProcessIdentity

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for ProcessIdentity

Source§

impl Hash for ProcessIdentity

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for ProcessIdentity

Source§

fn eq(&self, other: &ProcessIdentity) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for ProcessIdentity

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for ProcessIdentity

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more