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());
getContext().system().terminate();
} else {
unhandled(msg);
}
}
}
}