Skip to main content

ControlRegistry

Struct ControlRegistry 

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

The worker’s attempt back-index: maps a live SessionKey to its session control leg, so a routed command reaches the exact in-flight attempt.

A session installs itself with Self::register when it starts and the returned SessionGuard removes it on drop, so the index tracks exactly the sessions running on this worker. It is cheap to clone (an Arc inside), so the liminal serve loop and the session-spawn path share one index.

Implementations§

Source§

impl ControlRegistry

Source

pub fn new() -> Self

Build an empty control registry.

Source

pub fn register( &self, key: SessionKey, control: UnboundedSender<ControlMessage>, capabilities: InterventionCapabilities, ) -> SessionGuard

Register a live session’s control leg under its key, returning a guard whose drop deregisters it (so the index never routes to a gone session).

The control sender is the driver’s control channel (the receiver half is handed to spawn_agent as its control_receiver); capabilities is the session’s advertised neutral primitive set, which the worker gates on before delivering a command.

Source

pub async fn deliver(&self, command: InterventionCommand) -> InterventionOutcome

Deliver one routed command to the session that owns its target, returning the neutral InterventionOutcome ack.

Resolves the target session by (workflow, activity, attempt). When no live session owns the target, returns InterventionOutcome::stale_target — the attempt-scoped no-op. When the session’s advertised capabilities do not include the command’s primitive, returns InterventionOutcome::capability_not_supported WITHOUT delivering it (the worker gate mirrors the server gate; a well-behaved server never sends an unadvertised primitive, but the worker refuses one cleanly if it arrives). Otherwise it delivers the command and awaits the driver’s ack.

Trait Implementations§

Source§

impl Clone for ControlRegistry

Source§

fn clone(&self) -> ControlRegistry

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 ControlRegistry

Source§

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

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

impl Default for ControlRegistry

Source§

fn default() -> ControlRegistry

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

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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