pub struct SystemRegistry { /* fields omitted */ }
System wide actors registry
System registry serves same purpose as Registry,
except it is shared across all arbiters.
use actix::prelude::*;
#[derive(Message)]
struct Ping;
#[derive(Default)]
struct MyActor1;
impl Actor for MyActor1 {
type Context = Context<Self>;
}
impl actix::Supervised for MyActor1 {}
impl SystemService for MyActor1 {
fn service_started(&mut self, ctx: &mut Context<Self>) {
println!("Service started");
}
}
impl Handler<Ping> for MyActor1 {
type Result = ();
fn handle(&mut self, _: Ping, ctx: &mut Context<Self>) {
println!("ping");
}
}
struct MyActor2;
impl Actor for MyActor2 {
type Context = Context<Self>;
fn started(&mut self, _: &mut Context<Self>) {
let act = System::current().registry().get::<MyActor1>();
act.do_send(Ping);
}
}
fn main() {
let code = System::run(|| {
let addr = MyActor1.start();
let addr = MyActor2.start();
});
}
Return address of the service. If service actor is not running
it get started in the system.
Performs copy-assignment from source
. Read more