Skip to main content

CancelToken

Struct CancelToken 

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

A latch a caller flips to stop in-flight gateway work.

04-subsystem-contracts.md requires the gateway to support cancellation, and the requirement has teeth precisely because of pagination: an organization inventory is a sequence of requests, and a refresh the operator has already navigated away from should not keep spending the shared budget on pages nobody will read.

So cancellation is checked in two places, and both matter. Before each request — which is what stops a multi-page walk between pages — and concurrently with the request in flight, which is what stops a walk that is blocked on a socket.

Cloning shares the latch. Cancelling is one-way: a token that has been cancelled stays cancelled, because “cancel, then reuse” is how a caller ends up with a token whose state depends on a race.

Implementations§

Source§

impl CancelToken

Source

pub fn new() -> Self

A token nothing has cancelled yet.

Source

pub fn cancel(&self)

Cancel every operation holding this token, now and in the future.

Source

pub fn is_cancelled(&self) -> bool

Source

pub fn check(&self) -> Result<(), InventoryError>

Err(InventoryError::Cancelled) once cancelled, so a call site can bail with ?.

§Errors

InventoryError::Cancelled.

Source

pub async fn cancelled(&self)

Resolves when this token is cancelled, and never otherwise.

Source

pub async fn run<T>( &self, work: impl Future<Output = Result<T, InventoryError>>, ) -> Result<T, InventoryError>

Run work, abandoning it if this token is cancelled first.

§Errors

InventoryError::Cancelled, or whatever work fails with.

Trait Implementations§

Source§

impl Clone for CancelToken

Source§

fn clone(&self) -> CancelToken

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 CancelToken

Source§

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

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

impl Default for CancelToken

Source§

fn default() -> CancelToken

Returns the “default value” for a type. 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> 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> 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> 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