ExtensionState

Struct ExtensionState 

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

Shared state for extension management.

This manages all registered extensions, their event queues, and coordination for event delivery.

Implementations§

Source§

impl ExtensionState

Source

pub fn new() -> Self

Creates a new extension state.

Source

pub async fn register( &self, name: String, events: Vec<EventType>, ) -> RegisteredExtension

Registers a new extension.

§Arguments
  • name - Name of the extension (from Lambda-Extension-Name header)
  • events - List of events the extension wants to receive
§Returns

The registered extension information including its ID.

Source

pub async fn broadcast_event(&self, event: LifecycleEvent)

Broadcasts an event to all extensions subscribed to that event type.

§Arguments
  • event - The lifecycle event to broadcast
Source

pub async fn next_event(&self, extension_id: &str) -> Option<LifecycleEvent>

Waits for and retrieves the next event for a specific extension.

This is a long-poll operation that blocks until an event is available.

§Arguments
  • extension_id - The ID of the extension requesting the next event
§Returns

The next lifecycle event for this extension.

Source

pub async fn get_extension( &self, extension_id: &str, ) -> Option<RegisteredExtension>

Gets information about a registered extension.

§Arguments
  • extension_id - The ID of the extension
§Returns

The extension information if it exists.

Source

pub async fn get_all_extensions(&self) -> Vec<RegisteredExtension>

Gets all registered extensions.

Source

pub async fn extension_count(&self) -> usize

Returns the number of registered extensions.

Source

pub async fn get_invoke_subscribers(&self) -> Vec<ExtensionId>

Returns the IDs of all extensions subscribed to INVOKE events.

This is used to determine which extensions need to signal readiness after each invocation.

Source

pub async fn get_shutdown_subscribers(&self) -> Vec<ExtensionId>

Returns the IDs of all extensions subscribed to SHUTDOWN events.

This is used to determine which extensions need to receive the SHUTDOWN event during graceful shutdown.

Source

pub async fn wake_all_extensions(&self)

Wakes all extensions waiting on /next.

This is used during shutdown to unblock extensions waiting for events.

Source

pub async fn is_queue_empty(&self, extension_id: &str) -> bool

Checks if an extension’s event queue is empty.

This is used during shutdown to determine if an extension has consumed all events (including the SHUTDOWN event).

Source

pub async fn mark_shutdown_acknowledged(&self, extension_id: &str)

Marks an extension as having acknowledged shutdown.

This is called when an extension polls /next after receiving the SHUTDOWN event, signaling it has completed its cleanup work.

Source

pub async fn is_shutdown_acknowledged(&self, extension_id: &str) -> bool

Checks if an extension has acknowledged shutdown.

Source

pub async fn wait_for_shutdown_acknowledged(&self, extension_ids: &[String])

Waits for all specified extensions to acknowledge shutdown.

Returns when all extensions have polled /next after receiving SHUTDOWN.

Source

pub async fn clear_shutdown_acknowledged(&self)

Clears shutdown acknowledgment state.

Called when starting a new shutdown sequence.

Trait Implementations§

Source§

impl Debug for ExtensionState

Source§

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

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

impl Default for ExtensionState

Source§

fn default() -> Self

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> 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: 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: 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, 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