package akka.first.app.java.actors;
import akka.actor.ActorRef;
import akka.actor.Props;
import akka.actor.UntypedActor;
import akka.actor.UntypedActorFactory;
import akka.first.app.java.messages.Result;
public class MasterActor extends UntypedActor {
private ActorRef aggregateActor = getContext().actorOf(
new Props(AggregateActor.class), "aggregate");
private ActorRef reduceActor = getContext().actorOf(
new Props(new UntypedActorFactory() {
public UntypedActor create() {
return new ReduceActor(aggregateActor);
}
}), "reduce");
private ActorRef mapActor = getContext().actorOf(
new Props(new UntypedActorFactory() {
public UntypedActor create() {
return new MapActor(reduceActor);
}
}), "map");
@Override
public void onReceive(Object message) throws Exception {
if (message instanceof String) {
mapActor.tell(message);
} else if (message instanceof Result) {
aggregateActor.tell(message);
} else
unhandled(message);
}
}