package wow.doge.mygame.utils import akka.actor.typed.ActorRef import akka.actor.typed.Behavior import akka.actor.typed.Props import akka.actor.typed.Scheduler import akka.actor.typed.SpawnProtocol import akka.util.Timeout import wow.doge.mygame.implicits._ import java.util.concurrent.TimeoutException import monix.bio.IO import wow.doge.mygame.AppError.TimeoutError object AkkaUtils { def spawnActorOldL[T]( spawnProtocol: ActorRef[SpawnProtocol.Command], actorName: String, behavior: Behavior[T] )(implicit timeout: Timeout, scheduler: Scheduler) = spawnProtocol.askL[ActorRef[T]]( SpawnProtocol.Spawn( behavior, actorName, Props.empty, _ ) ) def spawnActorL[T]( behavior: Behavior[T], actorName: String, props: Props = Props.empty )(implicit timeout: Timeout, scheduler: Scheduler, spawnProtocol: ActorRef[SpawnProtocol.Command] ) = spawnProtocol .askL[ActorRef[T]]( SpawnProtocol.Spawn( behavior, actorName, props, _ ) ) // .onErrorHandleWith { // case ex: TimeoutException => IO.raiseError(TimeoutError(ex.getMessage)) // } }