Scala 如何限制对本地参与者的访问

Scala 如何限制对本地参与者的访问,scala,akka,actor,Scala,Akka,Actor,我正在为类成员搜索像private这样的封装方法。我想让一个参与者提供一些常见的无害消息和特权,它们可能以不希望的方式改变状态。我还可以构建代理角色,它将根据访问策略过滤消息。但是这两个参与者仍然可以通过完整路径actor ref访问。如何使某些actor ref私有化,只有其父级才能访问这些actor ref?只要使用ActorSelection知道路径,任何其他参与者都可以访问任何actor 如果您想限制某些消息,可以使用诸如package private之类的方法 假设您有Dangerou

我正在为类成员搜索像
private
这样的封装方法。我想让一个参与者提供一些常见的无害消息和特权,它们可能以不希望的方式改变状态。我还可以构建代理角色,它将根据访问策略过滤消息。但是这两个参与者仍然可以通过完整路径actor ref访问。如何使某些actor ref私有化,只有其父级才能访问这些actor ref?

只要使用
ActorSelection
知道路径,任何其他参与者都可以访问任何actor

如果您想限制某些消息,可以使用诸如package private之类的方法

假设您有
DangerousActor
,并且您只希望在同一个包中定义的actor能够发送
DangerousMessage
,但是您也有
SafeMessage
,并且您可以接受actor系统中发送该消息的任何其他人

package dangerous

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

case DangerousActor extends Actor {
  import DangerousActor._

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

只有在
危险
包中定义的参与者才能引用
危险消息

只要使用
参与者选择
知道路径,任何参与者都可以被任何其他参与者寻址

如果您想限制某些消息,可以使用诸如package private之类的方法

假设您有
DangerousActor
,并且您只希望在同一个包中定义的actor能够发送
DangerousMessage
,但是您也有
SafeMessage
,并且您可以接受actor系统中发送该消息的任何其他人

package dangerous

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

case DangerousActor extends Actor {
  import DangerousActor._

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

只有在
危险
包中定义的参与者才能引用
危险消息

只要使用
参与者选择
知道路径,任何参与者都可以被任何其他参与者寻址

如果您想限制某些消息,可以使用诸如package private之类的方法

假设您有
DangerousActor
,并且您只希望在同一个包中定义的actor能够发送
DangerousMessage
,但是您也有
SafeMessage
,并且您可以接受actor系统中发送该消息的任何其他人

package dangerous

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

case DangerousActor extends Actor {
  import DangerousActor._

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

只有在
危险
包中定义的参与者才能引用
危险消息

只要使用
参与者选择
知道路径,任何参与者都可以被任何其他参与者寻址

如果您想限制某些消息,可以使用诸如package private之类的方法

假设您有
DangerousActor
,并且您只希望在同一个包中定义的actor能够发送
DangerousMessage
,但是您也有
SafeMessage
,并且您可以接受actor系统中发送该消息的任何其他人

package dangerous

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

case DangerousActor extends Actor {
  import DangerousActor._

  def receive = {
    case DangerousMessage =>
    case SafeMessage => 
  }
}
只有在
危险
包中定义的参与者才能引用
危险消息