pub struct ProcSupervisionCoordinator(/* private fields */);Expand description
Used to create a proc supervison coordinator for testing purposes. Normally you should not use this struct. It is only required in the following cases:
- The tests’ logic involves actor failures;
- A supervison coordinator is not already set for the proc (e.g. the ProcActor scenario which will be explained later.)
This is because hyperactor’s supervision logic requires actor failures in a proc to be bubbled up to through the supervision chain:
grandchild actor -> child actor -> root actor -> proc supervison coordinator
If the the proc supervison coordinator is not set, supervision will crash the process because it cannot find the coordinator during the “bubbling up”.
Implementations§
Source§impl ProcSupervisionCoordinator
impl ProcSupervisionCoordinator
Sourcepub async fn set(
proc: &Proc,
) -> Result<(ReportedEvent, ActorHandle<ProcSupervisionCoordinator>), Error>
pub async fn set( proc: &Proc, ) -> Result<(ReportedEvent, ActorHandle<ProcSupervisionCoordinator>), Error>
Spawn a coordinator actor and set it as the coordinator for the given proc. Returns the reported event state and the coordinator actor handle. Callers should drain and stop the coordinator handle when the test is done to avoid ASAN thread-leak errors.
Trait Implementations§
Source§impl Actor for ProcSupervisionCoordinator
impl Actor for ProcSupervisionCoordinator
Source§fn init<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_this: &'life1 Instance<Self>,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn init<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_this: &'life1 Instance<Self>,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn cleanup<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
_this: &'life1 Instance<Self>,
_err: Option<&'life2 ActorError>,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn cleanup<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
_this: &'life1 Instance<Self>,
_err: Option<&'life2 ActorError>,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Source§fn spawn(self, cx: &impl Actor) -> Result<ActorHandle<Self>>
fn spawn(self, cx: &impl Actor) -> Result<ActorHandle<Self>>
Instance).
The spawned actor will be supervised by the parent (spawning) actor.Source§fn spawn_with_name(
self,
cx: &impl Actor,
name: &str,
) -> Result<ActorHandle<Self>>
fn spawn_with_name( self, cx: &impl Actor, name: &str, ) -> Result<ActorHandle<Self>>
spawn, but the child gets name in its ActorId.Source§fn spawn_detached(self) -> Result<ActorHandle<Self>, Error>
fn spawn_detached(self) -> Result<ActorHandle<Self>, Error>
Source§fn spawn_server_task<F>(future: F) -> JoinHandle<F::Output>
fn spawn_server_task<F>(future: F) -> JoinHandle<F::Output>
Source§fn handle_supervision_event<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
_this: &'life1 Instance<Self>,
_event: &'life2 ActorSupervisionEvent,
) -> Pin<Box<dyn Future<Output = Result<bool, Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn handle_supervision_event<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
_this: &'life1 Instance<Self>,
_event: &'life2 ActorSupervisionEvent,
) -> Pin<Box<dyn Future<Output = Result<bool, Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Source§fn handle_undeliverable_message<'life0, 'life1, 'async_trait>(
&'life0 mut self,
cx: &'life1 Instance<Self>,
envelope: Undeliverable<MessageEnvelope>,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn handle_undeliverable_message<'life0, 'life1, 'async_trait>(
&'life0 mut self,
cx: &'life1 Instance<Self>,
envelope: Undeliverable<MessageEnvelope>,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn display_name(&self) -> Option<String>
fn display_name(&self) -> Option<String>
Source§impl Debug for ProcSupervisionCoordinator
impl Debug for ProcSupervisionCoordinator
Auto Trait Implementations§
impl Freeze for ProcSupervisionCoordinator
impl RefUnwindSafe for ProcSupervisionCoordinator
impl Send for ProcSupervisionCoordinator
impl Sync for ProcSupervisionCoordinator
impl Unpin for ProcSupervisionCoordinator
impl UnwindSafe for ProcSupervisionCoordinator
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
Source§impl<A> Handler<Undeliverable<MessageEnvelope>> for Awhere
A: Actor,
impl<A> Handler<Undeliverable<MessageEnvelope>> for Awhere
A: Actor,
Source§fn handle<'life0, 'life1, 'async_trait>(
&'life0 mut self,
cx: &'life1 Context<'_, A>,
message: Undeliverable<MessageEnvelope>,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
A: 'async_trait,
fn handle<'life0, 'life1, 'async_trait>(
&'life0 mut self,
cx: &'life1 Context<'_, A>,
message: Undeliverable<MessageEnvelope>,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
A: 'async_trait,
§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].