Я реализовал черту Listenable / Listener, которую можно добавить в Actors. Мне интересно, возможно ли присоединить этот стиль черты к актеру без явного вызова метода listenerHandler ?
Также я ожидал найти эту функцию в библиотеке Akka. Я что-то упустил или есть какая-то причина, по которой Акка не включит это?
trait Listenable { this: Actor =>
private var listeners: List[Actor] = Nil
protected def listenerHandler: PartialFunction[Any, Unit] = {
case AddListener(who) => listeners = who :: listeners
}
protected def notifyListeners(event: Any) = {
listeners.foreach(_.send(event))
}
}
class SomeActor extends Actor with Listenable
{
def receive = listenerHandler orElse {
case Start => notifyListeners(Started())
case Stop => notifyListeners(Stopped())
}
}