Skip to main content

TransientUnitHandle

Struct TransientUnitHandle 

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

Holds a reference on the unit (AddRef=true), so systemd keeps it loaded after it exits. Release it with release or by dropping the handle; until then, starting a unit of the same name fails with UnitStillLoaded.

Implementations§

Source§

impl TransientUnitHandle

Source

pub async fn stop(&self) -> Result<UnitExit, SystemdTransientError>

Stops the unit and returns the state it ended in. If the unit had already exited, nothing is stopped and that earlier state is returned. If someone else started the unit again since, it is left running and UnitRestarted is returned, unless this run’s exit was already seen.

The handle’s reference keeps the name from being reused, but the unit itself can be started again (systemctl start). The invocation ID check keeps this call from stopping that later run. A restart between the check and StopUnit is not caught.

Source

pub fn name(&self) -> &str

Source

pub async fn wait_for_exit(&self) -> Result<UnitExit, SystemdTransientError>

Resolves once the unit has exited, even if that happened before this call. Several tasks may wait at once, also while another one calls stop.

Source

pub async fn release(self) -> Result<(), SystemdTransientError>

Drops the reference on the unit, so systemd can collect it once it is inactive. Does not stop the unit.

Trait Implementations§

Source§

impl Debug for TransientUnitHandle

Source§

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

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

impl Drop for TransientUnitHandle

Source§

fn drop(&mut self)

Releases the reference in a background task. Without a Tokio runtime the reference lasts until the bus connection closes.

Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

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> 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, 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