0
最初に俳優が状態変更についてのメッセージを送り、後で本当にこの状態に変更されたことに気付きました。あたりです?ここでActorContextの変更順
class MyActor extends Actor {
def receive = idle(Set.empty)
def idle(isInSet: Set[String]): Receive = {
case Add(key) =>
// sending the result as a message back to our actor
validate(key).map(Validated(key, _)).pipeTo(self)
// waiting for validation
context.become(waitForValidation(isInSet, sender()))
}
def waitForValidation(set: Set[String], source: ActorRef): Receive = {
case Validated(key, isValid) =>
val newSet = if (isValid) set + key else set
// sending acknowledgement of completion
source ! Continue
は通知
// go back to idle, accepting new requests
context.become(idle(newSet))
以降は、あなたが俳優を受信したい場合は、おそらくpipeTo(自己)の前に)(になるの移行を検討すべき状態
case Add(key) =>
sender() ! Rejected
}
def validate(key: String): Future[Boolean] = ???
}
// Messages
case class Add(key: String)
case class Validated(key: String, isValid: Boolean)
case object Continue
case object Rejected