package org.akka.essentials.java.hotswap.example;
import akka.actor.UntypedActor;
import akka.japi.Procedure;
public class PingPongActor extends UntypedActor {
static String PING = "PING";
static String PONG = "PONG";
int count = 0;
@Override
public void onReceive(Object message) throws Exception {
if (message instanceof String) {
if (((String) message).matches(PING)) {
System.out.println("PING");
count += 1;
Thread.sleep(100);
getSelf().tell(PONG);
getContext().become(new Procedure<Object>() {
public void apply(Object message) {
if (message instanceof String) {
if (((String) message).matches(PONG)) {
System.out.println("PONG");
count += 1;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
//
}
getSelf().tell(PING);
getContext().unbecome();
}
}
}
});
if (count > 10)
getContext().stop(getSelf());
}
}
}
}