Как ограничить доступ к локальному актеру
Я ищу методы инкапсуляции, такие как 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
,