InstanceCell

Struct InstanceCell 

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

InstanceCell contains all of the type-erased, shareable state of an instance. Specifically, InstanceCells form a supervision tree, and is used by ActorHandle to access the underlying instance.

InstanceCell is reference counted and cloneable.

Implementations§

Source§

impl InstanceCell

Source

pub fn actor_id(&self) -> &ActorId

The actor’s ID.

Source

pub fn status(&self) -> &Receiver<ActorStatus>

The instance’s status observer.

Source

pub fn supervision_event(&self) -> Option<ActorSupervisionEvent>

The supervision event stored when this actor failed. None for actors that stopped cleanly or are still running.

Source

pub fn signal(&self, signal: Signal) -> Result<(), ActorError>

Send a signal to the actor.

Source

pub fn send_supervision_event_or_crash( &self, child_cx: &impl Actor, event: ActorSupervisionEvent, )

Used by this actor’s children to send a supervision event to this actor. When it fails to send, we will crash the process. As part of the crash, all the procs and actors running on this process will be terminated forcefully.

Note that “let it crash” is the default behavior when a supervision event cannot be delivered upstream. It is the upstream’s responsibility to detect and handle crashes.

Source

pub fn downgrade(&self) -> WeakInstanceCell

Downgrade this InstanceCell to a weak reference.

Source

pub fn child_count(&self) -> usize

The number of children this instance has.

Source

pub fn child_actor_ids(&self) -> Vec<ActorId>

Returns the ActorIds of this instance’s direct children.

Source

pub fn recording(&self) -> &Recording

Access the flight recorder for this actor.

Source

pub fn created_at(&self) -> SystemTime

When this actor was created.

Source

pub fn num_processed_messages(&self) -> u64

The number of messages processed by this actor.

Source

pub fn last_message_handler(&self) -> Option<HandlerInfo>

The last message handler invoked by this actor.

Source

pub fn total_processing_time_us(&self) -> u64

Total time spent processing messages, in microseconds.

Source

pub fn parent(&self) -> Option<InstanceCell>

Get parent instance cell, if it exists.

Source

pub fn actor_type_name(&self) -> &str

The actor’s type name.

Source

pub fn set_published_attrs(&self, attrs: Attrs)

Replace the published introspection attrs with a new bag.

Source

pub fn merge_published_attr<T: AttrValue>(&self, key: Key<T>, value: T)

Set a single introspection attr, merging into the existing bag (or creating one if none exists).

Source

pub fn published_attrs(&self) -> Option<Attrs>

Read the published introspection attrs, if any.

Source

pub fn set_query_child_handler( &self, handler: impl Fn(&Reference) -> IntrospectResult + Send + Sync + 'static, )

Register a callback for resolving non-addressable children via IntrospectMessage::QueryChild.

The callback runs on the actor’s introspect task (a separate tokio task, not the actor’s message loop), so it must be Send + Sync and must not access actor-mutable state. Capture cloned Proc references, not &mut self.

Source

pub fn query_child(&self, child_ref: &Reference) -> Option<IntrospectResult>

Invoke the registered QueryChild handler, if any.

Source

pub fn is_system(&self) -> bool

Whether this actor is infrastructure/system.

Source

pub fn store_terminated_snapshot(&self, payload: IntrospectResult)

Store a post-mortem snapshot for this actor in the proc’s terminated_snapshots map. Called by the introspect task just before exiting on terminal status.

Eviction policy when the retention cap is exceeded:

  1. Evict cleanly-stopped actors first (no failure_info).
  2. When only failed actors remain, evict the most recent (by occurred_at), preserving the earliest failures which are closest to the root cause.
Source

pub fn traverse<F>(&self, f: &mut F)
where F: FnMut(&InstanceCell, usize),

Traverse the subtree rooted at this instance in pre-order. The callback receives each InstanceCell and its depth (root = 0). Children are visited in pid order for deterministic traversal.

Trait Implementations§

Source§

impl Clone for InstanceCell

Source§

fn clone(&self) -> InstanceCell

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for InstanceCell

Source§

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

Formats the value using the given formatter. 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.

§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<A, M> Handler<IndexedErasedUnbound<M>> for A
where A: Handler<M>, M: Castable,

Source§

fn handle<'life0, 'life1, 'async_trait>( &'life0 mut self, cx: &'life1 Context<'_, A>, msg: IndexedErasedUnbound<M>, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, A: 'async_trait,

Handle the next M-typed message.
§

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

§

fn into_request(self) -> Request<T>

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

impl<L> LayerExt<L> for L

§

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

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

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

§

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
§

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
§

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

§

fn push_quoted<'q, Q, S>(&mut self, _q: Q, s: S)
where Q: QuoteInto<T>, S: Into<Quotable<'q>>,

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
§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

Source§

impl<M> Message for M
where M: Send + Sync + 'static,