Struct actix::registry::SystemRegistry
source · pub struct SystemRegistry { /* private fields */ }
Expand description
System wide actors registry
System registry serves same purpose as Registry, except it is shared across all arbiters.
Example
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() {
// initialize system
let code = System::run(|| {
// Start MyActor1
let addr = MyActor1.start();
// Start MyActor2
let addr = MyActor2.start();
});
}
Implementations§
source§impl SystemRegistry
impl SystemRegistry
sourcepub fn get<A: SystemService + Actor<Context = Context<A>>>(&self) -> Addr<A>
pub fn get<A: SystemService + Actor<Context = Context<A>>>(&self) -> Addr<A>
Return address of the service. If service actor is not running it get started in the system.