package im.actor.runtime.actors;
import im.actor.runtime.Log;
import im.actor.runtime.actors.ask.AskIntRequest;
import im.actor.runtime.promise.Promise;
import im.actor.runtime.promise.PromiseResolver;
import im.actor.runtime.promise.Promises;
public class AskcableActor extends Actor {
public Promise onAsk(Object message) throws Exception {
throw new RuntimeException("Not implemented");
}
@Override
public void onReceive(Object message) {
if (message instanceof AskIntRequest) {
AskIntRequest askRequest = (AskIntRequest) message;
try {
Promise p = onAsk(askRequest.getMessage());
if (p == null) {
// Just ignore. We assume that message is stashed
return;
}
p.pipeTo(askRequest.getFuture());
} catch (Exception e) {
e.printStackTrace();
askRequest.getFuture().tryError(e);
}
} else {
super.onReceive(message);
}
}
}