if (scope != null) {
return scope.getActorRef();
}
// Finding dispatcher for actor
AbsMailboxesDispatcher mailboxesDispatcher;
synchronized (dispatchers) {
String dispatcherId = props.getDispatcher() == null ? DEFAULT_DISPATCHER : props.getDispatcher();
if (!dispatchers.containsKey(dispatcherId)) {
throw new RuntimeException("Unknown dispatcherId '" + dispatcherId + "'");
}
mailboxesDispatcher = dispatchers.get(dispatcherId);
}
// Creating actor scope
scope = new ActorScope(UUID.randomUUID(), path, props);
// Connecting scope with dispatcher
mailboxesDispatcher.connectScope(scope);
// Sending initial message for creating actor
mailboxesDispatcher.getQueue().putToQueue(new Envelope(StartActor.INSTANCE, scope.getMailbox(), null), ActorTime.currentTime());
// Saving actor in collection
actors.put(path, scope);
return scope.getActorRef();