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

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 actix::ArbiterService 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 = 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();
}

Methods

impl Registry
[src]

[src]

Query registry for specific actor. Returns address of the actor. If actor is not registered, starts new actor and return address of newly created actor.