pub struct ActorSystem { /* private fields */ }Expand description
Represents a collection of actors, so that they can be shutdown together.
Implementations§
Source§impl ActorSystem
impl ActorSystem
pub fn new() -> Self
pub fn stop(&self)
Sourcepub fn spawn_tokio_actor<A: Actor + Send + 'static>(
&self,
actor: A,
) -> TokioRuntimeHandle<A>
pub fn spawn_tokio_actor<A: Actor + Send + 'static>( &self, actor: A, ) -> TokioRuntimeHandle<A>
Spawns an actor in a single threaded Tokio runtime and returns a handle to it. The handle can be used to get the sender and future spawner for the actor.
struct MyActor;
impl Actor for MyActor {}
impl Handler<MyMessage> for MyActor {
fn handle(&mut self, msg: MyMessage) {}
}
// We can use the actor_handle to create senders and future spawners.
let actor_handle = actor_system.spawn_tokio_actor(MyActor);
let sender: MyAdapter = actor_handle.sender();
let future_spawner = actor_handle.future_spawner();The sender and future spawner can then be passed onto other components that need to send messages to the actor or spawn futures in the runtime of the actor.
Sourcepub fn new_tokio_builder<A: Actor + Send + 'static>(
&self,
) -> TokioRuntimeBuilder<A>
pub fn new_tokio_builder<A: Actor + Send + 'static>( &self, ) -> TokioRuntimeBuilder<A>
A more granular way to build a tokio runtime. It allows spawning futures and getting a handle before the actor is constructed (so that the actor can be constructed with the handle, for sending messages to itself).
Sourcepub fn spawn_multithread_actor<A: Actor + Send + 'static>(
&self,
num_threads: usize,
make_actor_fn: impl Fn() -> A + Sync + Send + 'static,
) -> MultithreadRuntimeHandle<A>
pub fn spawn_multithread_actor<A: Actor + Send + 'static>( &self, num_threads: usize, make_actor_fn: impl Fn() -> A + Sync + Send + 'static, ) -> MultithreadRuntimeHandle<A>
Spawns a multi-threaded actor which handles messages in a synchronous thread pool.
Used similarly to spawn_tokio_actor, but this actor is intended for CPU-bound tasks,
can run multiple threads, and does not support futures, timers, or delayed messages.
Sourcepub fn new_future_spawner(&self, description: &str) -> Box<dyn FutureSpawner>
pub fn new_future_spawner(&self, description: &str) -> Box<dyn FutureSpawner>
Returns a future spawner for the actor system on an independent Tokio runtime. Note: For typical actors, it is recommended we use the future spawner of the actor instead.
This is useful for keeping track of spawned futures and their lifetimes. Behind the scenes, this builds a new EmptyActor each time.
Trait Implementations§
Source§impl Clone for ActorSystem
impl Clone for ActorSystem
Source§fn clone(&self) -> ActorSystem
fn clone(&self) -> ActorSystem
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for ActorSystem
impl !RefUnwindSafe for ActorSystem
impl Send for ActorSystem
impl Sync for ActorSystem
impl Unpin for ActorSystem
impl !UnwindSafe for ActorSystem
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<A, B> IntoMultiSender<B> for Awhere
B: MultiSenderFrom<A>,
impl<A, B> IntoMultiSender<B> for Awhere
B: MultiSenderFrom<A>,
fn as_multi_sender(self: &Arc<A>) -> B
fn into_multi_sender(self) -> B
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request