2013-11-15 11:53:21 +01:00
|
|
|
package sample.hello;
|
|
|
|
|
|
|
|
|
|
import akka.actor.ActorRef;
|
|
|
|
|
import akka.actor.ActorSystem;
|
|
|
|
|
import akka.actor.Props;
|
|
|
|
|
import akka.actor.Terminated;
|
|
|
|
|
import akka.actor.UntypedActor;
|
|
|
|
|
import akka.event.Logging;
|
|
|
|
|
import akka.event.LoggingAdapter;
|
|
|
|
|
|
|
|
|
|
public class Main2 {
|
|
|
|
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
|
ActorSystem system = ActorSystem.create("Hello");
|
|
|
|
|
ActorRef a = system.actorOf(Props.create(HelloWorld.class), "helloWorld");
|
|
|
|
|
system.actorOf(Props.create(Terminator.class, a), "terminator");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static class Terminator extends UntypedActor {
|
|
|
|
|
|
|
|
|
|
private final LoggingAdapter log = Logging.getLogger(getContext().system(), this);
|
|
|
|
|
private final ActorRef ref;
|
|
|
|
|
|
|
|
|
|
public Terminator(ActorRef ref) {
|
|
|
|
|
this.ref = ref;
|
|
|
|
|
getContext().watch(ref);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onReceive(Object msg) {
|
|
|
|
|
if (msg instanceof Terminated) {
|
|
|
|
|
log.info("{} has terminated, shutting down system", ref.path());
|
2014-08-25 15:49:28 +02:00
|
|
|
getContext().system().terminate();
|
2013-11-15 11:53:21 +01:00
|
|
|
} else {
|
|
|
|
|
unhandled(msg);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|