Я пишу кометное приложение в лифте, и некоторые из моих актеров имеют ссылки на других акторов, например, у пользователя A есть актер B, в котором есть переменная, хранящая актора C, который связан с пользователем D.
Некоторыедействия пользователя A должны привести к тому, что их субъект B отправит сообщение субъекту C.
Эти действия инициируются пользователем A.
Мой вопрос в том, можно ли вызывать обычные методы длясубъект B, в результате чего он отправляет сообщение C, или я должен вместо этого отправлять сообщение A, которое он получает, а затем отправляет сообщение B.
Чтобы поместить его в код, это такая вещьok:
//in some snippet:
val actorB: ActorB = session.map(.findCometActor(...))
"#some-button" #> SHtml.ajaxInvoke(() => actorB.sendIt(777)) //is this ok?
//the actors:
case class MyMessage(someInt: Int, someString: String)
class ActorB extends CometActor {
private var someString = ""
private var otherActor: Box[CometActor] = Empty
def sendIt(someInt: Int) = otherActor ! MyMessage(someInt, someString)
}
class ActorC extends CometActor {
def lowPriority = {
case MyMessage(num, str) => println(num + str)
}
}
Или если код фрагмента отправляет сообщение субъекту B, который затем отправит сообщение субъекту C вместо непосредственного вызова actorB.sendIt(777)
?
Редактировать: Просто чтобы подтвердить, что с этим нет никаких технических проблем, речь идет больше о стиле и, надеюсь, облегчает корректировку кода.Это правильно?