pub struct Instance<A: Actor> { /* private fields */ }Expand description
An actor instance. This is responsible for managing a running actor, including its full lifecycle, supervision, signal management, etc. Instances can represent a managed actor or a “client” actor that has joined the proc.
Implementations§
Source§impl<A: Actor> Instance<A>
impl<A: Actor> Instance<A>
Sourcepub fn introspect_payload(&self) -> IntrospectResult
pub fn introspect_payload(&self) -> IntrospectResult
Snapshot of this actor’s introspection payload.
Returns an IntrospectResult built from live InstanceCell
state, without going through the actor message loop. This is
safe to call from within a handler on the same actor (no
self-send deadlock).
The snapshot is best-effort: it reflects framework-owned state
(status, message count, flight recorder, supervision children)
at the instant of the call. parent is left as None —
callers are responsible for setting topology context.
Note: this acquires a write lock on the flight recorder spool and clones its contents. Suitable for occasional introspection requests, not for hot paths.
Sourcepub fn publish_attrs(&self, attrs: Attrs)
pub fn publish_attrs(&self, attrs: Attrs)
Publish domain-specific properties for introspection.
Publish a complete Attrs bag for introspection. Replaces any previously published attrs.
Debug builds assert that every key in the bag is tagged with
the INTROSPECT meta-attribute.
Sourcepub fn publish_attr<T: AttrValue>(&self, key: Key<T>, value: T)
pub fn publish_attr<T: AttrValue>(&self, key: Key<T>, value: T)
Publish a single attr key-value pair for introspection. Merges into existing published attrs (insert or overwrite).
Debug builds assert that the key is tagged with the
INTROSPECT meta-attribute.
Sourcepub fn set_system(&self)
pub fn set_system(&self)
Mark this actor as system/infrastructure. System actors are
hidden by default in the TUI (toggled via s).
Sourcepub fn set_query_child_handler(
&self,
handler: impl Fn(&Reference) -> IntrospectResult + Send + Sync + 'static,
)
pub fn set_query_child_handler( &self, handler: impl Fn(&Reference) -> IntrospectResult + Send + Sync + 'static, )
Register a callback for resolving non-addressable children.
The callback runs on the actor’s introspect task (not the
actor loop), so it must be Send + Sync and must not access
actor-mutable state. Capture cloned Proc references.
Only HostAgent uses this today — for resolving system
procs that have no independent ProcAgent.
Sourcepub fn abort(&self, reason: &str) -> Result<(), ActorError>
pub fn abort(&self, reason: &str) -> Result<(), ActorError>
Signal the actor to abort with a provided reason.
Sourcepub fn open_port<M: Message>(&self) -> (PortHandle<M>, PortReceiver<M>)
pub fn open_port<M: Message>(&self) -> (PortHandle<M>, PortReceiver<M>)
Open a new port that accepts M-typed messages. The returned port may be freely cloned, serialized, and passed around. The returned receiver should only be retained by the actor responsible for processing the delivered messages.
Sourcepub fn open_once_port<M: Message>(
&self,
) -> (OncePortHandle<M>, OncePortReceiver<M>)
pub fn open_once_port<M: Message>( &self, ) -> (OncePortHandle<M>, OncePortReceiver<M>)
Open a new one-shot port that accepts M-typed messages. The returned port may be used to send a single message; ditto the receiver may receive a single message.
Sourcepub fn locals(&self) -> &ActorLocalStorage
pub fn locals(&self) -> &ActorLocalStorage
Get the per-instance local storage.
Sourcepub fn post(&self, port_id: PortId, headers: Flattrs, message: Any)
pub fn post(&self, port_id: PortId, headers: Flattrs, message: Any)
Send a message to the actor running on the proc.
Sourcepub fn self_message_with_delay<M>(
&self,
message: M,
delay: Duration,
) -> Result<(), ActorError>
pub fn self_message_with_delay<M>( &self, message: M, delay: Duration, ) -> Result<(), ActorError>
Send a message to the actor itself with a delay usually to trigger some event.
Sourcepub async fn handle_supervision_event(
&self,
actor: &mut A,
supervision_event: ActorSupervisionEvent,
) -> Result<(), ActorError>
pub async fn handle_supervision_event( &self, actor: &mut A, supervision_event: ActorSupervisionEvent, ) -> Result<(), ActorError>
Handle a supervision event using the provided actor.
Sourcepub fn spawn<C: Actor>(&self, actor: C) -> Result<ActorHandle<C>>
pub fn spawn<C: Actor>(&self, actor: C) -> Result<ActorHandle<C>>
Spawn on child on this instance.
Sourcepub fn spawn_with_name<C: Actor>(
&self,
name: &str,
actor: C,
) -> Result<ActorHandle<C>>
pub fn spawn_with_name<C: Actor>( &self, name: &str, actor: C, ) -> Result<ActorHandle<C>>
Spawn a named child actor on this instance. The child gets a descriptive name in its ActorId instead of inheriting this instance’s name. Supervision linkage is preserved.
Sourcepub fn child(&self) -> Result<(Instance<()>, ActorHandle<()>)>
pub fn child(&self) -> Result<(Instance<()>, ActorHandle<()>)>
Create a new direct child instance.
Sourcepub fn port<M: Message>(&self) -> PortHandle<M>where
A: Handler<M>,
pub fn port<M: Message>(&self) -> PortHandle<M>where
A: Handler<M>,
Return a handle port handle representing the actor’s message handler for M-typed messages.
Sourcepub fn handle(&self) -> ActorHandle<A>
pub fn handle(&self) -> ActorHandle<A>
The ActorHandle corresponding to this instance.
Sourcepub fn instance_id(&self) -> Uuid
pub fn instance_id(&self) -> Uuid
Return this instance’s ID.
Sourcepub fn parent_handle<P: Actor>(&self) -> Option<ActorHandle<P>>
pub fn parent_handle<P: Actor>(&self) -> Option<ActorHandle<P>>
Return a handle to this instance’s parent actor, if it has one.
Source§impl Instance<()>
impl Instance<()>
Sourcepub fn bind_actor_port<M: RemoteMessage>(
&self,
) -> (PortHandle<M>, PortReceiver<M>)
pub fn bind_actor_port<M: RemoteMessage>( &self, ) -> (PortHandle<M>, PortReceiver<M>)
See Mailbox::bind_actor_port for details.
Trait Implementations§
Auto Trait Implementations§
impl<A> Freeze for Instance<A>
impl<A> !RefUnwindSafe for Instance<A>
impl<A> Send for Instance<A>
impl<A> Sync for Instance<A>
impl<A> Unpin for Instance<A>
impl<A> !UnwindSafe for Instance<A>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<A, M> Handler<IndexedErasedUnbound<M>> for A
impl<A, M> Handler<IndexedErasedUnbound<M>> for A
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].