Skip to main content

DelegationOrigin

Struct DelegationOrigin 

Source
pub struct DelegationOrigin<'a> {
    pub context_id: String,
    pub launched: Option<Arc<dyn Fn(DelegationLaunch) + Send + Sync + 'a>>,
    pub stop: Option<Arc<dyn Fn() -> bool + Send + Sync + 'a>>,
}
Expand description

The parent’s side of one delegation, beyond the three strings its agent supplied.

Per call rather than per plane: a launch that mints one context id per task has no launch-scoped conversation to name, so the id is only knowable once a task is running.

Fields§

§context_id: String

The conversation the delegation was made from. Empty when the caller has none, which injects no handle at all rather than one naming a conversation that does not exist.

§launched: Option<Arc<dyn Fn(DelegationLaunch) + Send + Sync + 'a>>

What to do with the launch notice, or None for a caller that records no delegation_start. Called on the delegating thread, before the delegation has ended.

A callback rather than a channel because the two callers are not the same shape: DelegationPlane::start runs on a blocking tokio worker with a task free to drain a receiver, while plan::execute calls DelegationPlane::delegate directly on a scheduler thread with no runtime to await on and nothing else running to drain anything. Invoked in place, both surfaces get the record on disk while the child is still in flight, which is the whole reason it is a record of its own.

§stop: Option<Arc<dyn Fn() -> bool + Send + Sync + 'a>>

Whether the task this delegation was made for has been cancelled, or None for a caller that cannot be. Polled, so it must be cheap and must never block.

Read only by DelegationPlane::delegate, which ends the child itself when it reports true. DelegationPlane::start ignores it: its caller races its own cancel against the launch, and holds the child’s handle from then on.

Trait Implementations§

Source§

impl<'a> Clone for DelegationOrigin<'a>

Source§

fn clone(&self) -> Self

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 DelegationOrigin<'_>

Hand-written because DelegationOrigin::launched and DelegationOrigin::stop are trait objects and cannot derive one. A callback has no readable identity, so what is printed of it is whether there is one.

Source§

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

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

impl<'a> Default for DelegationOrigin<'a>

Source§

fn default() -> Self

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

Auto Trait Implementations§

§

impl<'a> !RefUnwindSafe for DelegationOrigin<'a>

§

impl<'a> !UnwindSafe for DelegationOrigin<'a>

§

impl<'a> Forget for DelegationOrigin<'a>

§

impl<'a> Freeze for DelegationOrigin<'a>

§

impl<'a> Move for DelegationOrigin<'a>

§

impl<'a> Send for DelegationOrigin<'a>

§

impl<'a> Sync for DelegationOrigin<'a>

§

impl<'a> Unpin for DelegationOrigin<'a>

§

impl<'a> UnsafeUnpin for DelegationOrigin<'a>

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> 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> NoneValue for T
where T: Default,

Source§

type NoneType = T

The type of the none-equivalent value that NoneValue::null_value produces.
Source§

fn null_value() -> T

The none-equivalent value.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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, 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