Struct actix::Registry
[−]
[src]
pub struct Registry { /* fields omitted */ }
Actors registry
Actor can register itself as a service. Service can be defined as
ArbiterService
which is unique per arbiter or SystemService
which is
unique per system.
Example
extern crate actix; use actix::prelude::*; struct Ping; impl ResponseType for Ping { type Item = (); type Error = (); } #[derive(Default)] struct MyActor1; impl Actor for MyActor1 { type Context = Context<Self>; } impl Supervised for MyActor1 {} impl ArbiterService for MyActor1 { fn service_started(&mut self, ctx: &mut Context<Self>) { println!("Service started"); } } impl Handler<Ping> for MyActor1 { fn handle(&mut self, _: Ping, ctx: &mut Context<Self>) -> Response<Self, Ping> { println!("ping"); Arbiter::system().send(msgs::SystemExit(0)); Self::empty() } } struct MyActor2; impl Actor for MyActor2 { type Context = Context<Self>; fn started(&mut self, _: &mut Context<Self>) { let act = Arbiter::registry().get::<MyActor1>(); act.send(Ping) } } fn main() { // initialize system let sys = System::new("test"); // Start MyActor1 let _:() = MyActor1.start(); // Start MyActor2 let _:() = MyActor2.start(); // Run system, this function blocks current thread let code = sys.run(); std::process::exit(code); }