If an API call returns a Behavior instance (that under-the-covers is really a Receive instance) is there any way to call receiveSignals on it (or rewrap it such that one can) without resorting to a cast?
The situation I have - in Akka 2.6 the return type of SpawnProtocol.appy() is Behavior even though the implementation returns the result of calling Behaviors.receive (which returns a Recieve instance).
So I can’t call receiveSignal on the result without resorting to a cast like so:
val behavior: Behavior[SpawnProtocol.Command] = SpawnProtocol()
val receive = behavior.asInstanceOf[Receive[SpawnProtocol.Command]]
receive.receiveSignal {
case (_, Terminated(ref)) =>
log.warn(s"$ref terminated")
same
case (_, ChildFailed(ref, cause)) =>
log.error(s"$ref failed: ${cause.getMessage}", cause)
same
}
Is there a nicer way to do this? Can I avoid having to know about the underlying implementation? Can I (e.g. using one of the Behaviors.receiveX functions) somehow rewrap what I see as a Behavior such that I get essentially the same Receive object but with the right type?