use of im.actor.runtime.actors.Actor in project actor-platform by actorapp.
the class ActorDispatcher method processEnvelope.
/**
* Processing of envelope
*
* @param envelope envelope
*/
private void processEnvelope(Envelope envelope) {
ActorScope scope = envelope.getScope();
if (actorSystem.getTraceInterface() != null) {
actorSystem.getTraceInterface().onEnvelopeDelivered(envelope);
}
long start = ActorTime.currentTime();
if (scope.getActor() == null) {
if (envelope.getMessage() == PoisonPill.INSTANCE) {
// Not creating actor for PoisonPill
return;
}
try {
Actor actor = scope.getProps().create();
actor.initActor(scope.getPath(), new ActorContext(scope), scope.getMailbox());
ThreadDispatcher.pushDispatcher(actor.getDispatcher());
try {
actor.preStart();
} finally {
ThreadDispatcher.popDispatcher();
}
scope.onActorCreated(actor);
} catch (Exception e) {
e.printStackTrace();
if (envelope.getSender() != null) {
envelope.getSender().send(new DeadLetter("Unable to create actor"));
}
return;
}
}
try {
if (envelope.getMessage() == StartActor.INSTANCE) {
// Already created actor
} else if (envelope.getMessage() == PoisonPill.INSTANCE) {
ThreadDispatcher.pushDispatcher(scope.getActor().getDispatcher());
try {
scope.getActor().postStop();
} finally {
ThreadDispatcher.popDispatcher();
}
onActorDie(scope);
} else {
scope.getActor().handleMessage(envelope.getMessage(), envelope.getSender());
}
} catch (Exception e) {
if (actorSystem.getTraceInterface() != null) {
actorSystem.getTraceInterface().onActorDie(scope.getActorRef(), envelope, e);
}
ThreadDispatcher.pushDispatcher(scope.getActor().getDispatcher());
try {
scope.getActor().postStop();
} finally {
ThreadDispatcher.popDispatcher();
}
onActorDie(scope);
} finally {
if (actorSystem.getTraceInterface() != null) {
actorSystem.getTraceInterface().onEnvelopeProcessed(envelope, ActorTime.currentTime() - start);
}
}
}
use of im.actor.runtime.actors.Actor in project actor-platform by actorapp.
the class AuthActivity method onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
authActor = ActorSystem.system().actorOf(Props.create(new ActorCreator() {
@Override
public Actor create() {
return new Actor();
}
}), "actor/auth_promises_actor");
signType = getIntent().getIntExtra(SIGN_TYPE_KEY, SIGN_TYPE_IN);
PreferencesStorage preferences = messenger().getPreferences();
currentPhone = preferences.getLong("currentPhone", 0);
currentEmail = preferences.getString("currentEmail");
transactionHash = preferences.getString("transactionHash");
isRegistered = preferences.getBool("isRegistered", false);
codeValidated = preferences.getBool("codeValidated", false);
currentName = preferences.getString("currentName");
signType = preferences.getInt("signType", signType);
String savedState = preferences.getString("auth_state");
state = Enum.valueOf(AuthState.class, savedState != null ? savedState : "AUTH_START");
updateState(state, true);
}
Aggregations