Как ограничить доступ к локальному актеру

Я ищу методы инкапсуляции, такие как private для учеников. Я хотел бы, чтобы актер обеспечил принятие некоторых распространенных безобидных сообщений и привилегий, которые могли бы изменить состояние нежелательным образом. Я также могу создать прокси-субъект, который будет фильтровать сообщения на основе политики доступа. Но оба актера были бы все еще доступны через актера полного пути. Как я могу сделать личность какого-то актера закрытой, доступ к которой может получить только его родитель?

1 ответ

Любой другой участник может обратиться к любому другому субъекту, если путь известен с помощью ActorSelection,

Если вы хотите ограничить определенные сообщения, вы можете сделать это с такими вещами, как package-private.

Скажи у тебя DangerousActor и вы хотите, чтобы актеры, определенные в одном пакете, могли отправлять DangerousMessage, но у вас также есть SafeMessage и ты в порядке с кем-то еще в системе актеров, отправляющих это.

package dangerous

object DangerousActor {
  private[dangerous] case object DangerousMessage
  case object SafeMessage
}

case DangerousActor extends Actor {
  import DangerousActor._

  def receive = {
    case DangerousMessage =>
    case SafeMessage => 
  }
}

Только актеры также определены в dangerous пакет сможет ссылаться DangerousMessage,

Другие вопросы по тегам