Skip to main content

Stop

Struct Stop 

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

A cooperative stop, shared with whoever asked the loop to run.

Cloning is how the request travels: serve_until keeps one handle, the Ctrl-C listener and the web UI keep others, and every clone points at the same flag. There is no channel because there is nothing to send — the only message is “stop”, it is idempotent, and a flag cannot be missed by a receiver that was not listening yet.

The handle also answers the question the operator’s screen asks next: a stop does not take effect until the run in flight has finished, so Stop::finishing reports “asked to stop, still working” rather than leaving a caller to infer it from a heartbeat and hope.

Implementations§

Source§

impl Stop

Source

pub fn new() -> Self

A stop nobody has asked for yet.

Source

pub fn stop(&self)

Ask the loop to stop. Idempotent, and safe to call before the loop starts: the flag is checked before the first poll.

Source

pub fn stopped(&self) -> bool

Has a stop been asked for?

Source

pub fn finishing(&self) -> bool

Has a stop been asked for that has not taken effect yet, because a run is still in flight?

This is the state a screen has to be able to show. A stop never abandons a run — see serve_until — so between the tap and the loop’s return there is a window of tens of minutes in which “running” and “stopped” are both misleading answers.

Source

pub fn park(&self)

Ask the loop to stop and the run in flight to park at its next node boundary.

The plain Stop::stop never abandons a run, which is right when the operator only wants the queue to drain: a competition is tens of minutes and its worktrees are paid for. But an operator who wants to replace the binary cannot wait out a run that has an hour left, and killing the process loses whatever the seats in flight had not written. Parking costs at most the node in progress and leaves the run resumable.

Source

pub fn parking(&self) -> bool

Has a park been asked for?

Source

pub fn pause(&self) -> Pause

The pause handle to give a runner.

Source

pub fn busy_now(&self) -> bool

Is any run in flight right now?

finishing answers “a stop is waiting on a run”, which is false until someone asks to stop. An upgrade needs the plain question, because it is about to be the one asking.

Trait Implementations§

Source§

impl Clone for Stop

Source§

fn clone(&self) -> Stop

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 Stop

Source§

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

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

impl Default for Stop

Source§

fn default() -> Stop

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl Freeze for Stop

§

impl RefUnwindSafe for Stop

§

impl Send for Stop

§

impl Sync for Stop

§

impl Unpin for Stop

§

impl UnsafeUnpin for Stop

§

impl UnwindSafe for Stop

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
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, 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