content: /*
   * Copyright (C) 2015 Actor LLC. <https://actor.im>
   */
  
  package im.actor.runtime.actors;
  
  import im.actor.runtime.actors.dispatch.ActorDispatcher;
  import im.actor.runtime.actors.dispatch.ActorEndpoint;
  import im.actor.runtime.actors.dispatch.Mailbox;
  
  /**
   * <p>INTERNAL API</p>
   * Actor Scope contains UUID, Path, Props and Actor (if created).
   */
  public class ActorScope {
  
      private final String path;
      private final Props props;
  
      private final ActorRef actorRef;
      private final Mailbox mailbox;
  
      private final ActorDispatcher dispatcher;
  
      private final ActorSystem actorSystem;
  
      private Actor actor;
  
      private Object message;
      private ActorRef sender;
  
      private ActorEndpoint endpoint;
  
      public ActorScope(ActorSystem actorSystem, Mailbox mailbox, ActorDispatcher dispatcher, String path, Props props,
                        ActorEndpoint endpoint) {
          this.actorSystem = actorSystem;
          this.mailbox = mailbox;
          this.actorRef = new ActorRef(endpoint, actorSystem, path);
          this.dispatcher = dispatcher;
          this.path = path;
          this.props = props;
          this.endpoint = endpoint;
      }
  
      public ActorEndpoint getEndpoint() {
          return endpoint;
      }
  
      public ActorDispatcher getDispatcher() {
          return dispatcher;
      }
  
      public String getPath() {
          return path;
      }
  
      public Props getProps() {
          return props;
      }
  
      public ActorRef getActorRef() {
          return actorRef;
      }
  
      public Mailbox getMailbox() {
          return mailbox;
      }
  
      public Actor getActor() {
          return actor;
      }
  
      public ActorSystem getActorSystem() {
          return actorSystem;
      }
  
      public ActorRef getSender() {
          return sender;
      }
  
      public void setSender(ActorRef sender) {
          this.sender = sender;
      }
  
      public Object getMessage() {
          return message;
      }
  
      public void setMessage(Object message) {
          this.message = message;
      }
  
      public void onActorCreated(Actor actor) {
          this.actor = actor;
      }
  
      public void onActorDie() {
          this.actor = null;
          this.sender = null;
          this.message = null;
      }
  }
  