Skip to main content

AgentLifecycleCoordinator

Struct AgentLifecycleCoordinator 

pub struct AgentLifecycleCoordinator { /* private fields */ }
Expand description

Coordinates slow session admission with destructive alias mutations.

Implementations§

Source§

impl AgentLifecycleCoordinator

Source

pub fn reserve_config_mutation( &self, alias: impl Into<String>, ) -> Result<AgentAdmissionReservation, AgentAdmissionError>

Reserve an alias while a config property mutation is prepared and committed. This prevents delete/rename from crossing an autovivifying write without treating an ordinary config edit as destructive work.

Source

pub fn reserve_config_write( &self, ) -> Result<ConfigWriteLease, AgentAdmissionError>

Retain one config write in this daemon generation. Unlike the alias-scoped reservations above, this lease also covers config writes that do not target an agent. Generation drain waits for every retained writer before transferring process ownership to its successor.

Source

pub fn reserve_admission( &self, alias: impl Into<String>, ) -> Result<AgentAdmissionReservation, AgentAdmissionError>

Reserve an alias generation before slow agent construction starts.

Source

pub fn reserve_turn( &self, alias: impl Into<String>, ) -> Result<AgentTurnLease, AgentAdmissionError>

Admit one ordinary message turn without pinning an idle connection.

Source

pub fn alias_generation(&self, alias: &str) -> u64

Return the current generation token for a persistent turn producer.

Source

pub fn reserve_turn_at( &self, alias: impl Into<String>, generation: u64, ) -> Result<AgentTurnLease, AgentAdmissionError>

Admit a turn only when its persistent producer still targets the same alias generation it was constructed for.

Source

pub fn begin_delete( &self, alias: impl Into<String>, ) -> Result<AgentDeleteLease, AgentDeleteBlocker>

Reserve destructive work for one alias after proving no admission or published session is using it. The reservation blocks new admission by marking the alias changing, but does not advance the alias generation: a refused or failed mutation drops the lease and leaves existing producers usable. Only after the config mutation is durably committed does the caller call AgentDeleteLease::commit_destructive_mutation, which advances the generation exactly once and hands destructive ownership to the retained continuation.

Source

pub fn delete_blocker(&self, alias: &str) -> Option<AgentDeleteBlocker>

Source

pub fn live_session_count(&self, alias: &str) -> usize

Source

pub fn active_turn_count(&self, alias: &str) -> usize

Source

pub fn close_generation(&self)

Prevent this generation from admitting new sessions, turns, or destructive work before ingress shutdown begins.

Trait Implementations§

Source§

impl Clone for AgentLifecycleCoordinator

Source§

fn clone(&self) -> AgentLifecycleCoordinator

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · §

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for AgentLifecycleCoordinator

Source§

fn default() -> AgentLifecycleCoordinator

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
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

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
§

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

§

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
§

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
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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 = 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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more