forked from nova/jmonkey-test
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
896 B
32 lines
896 B
package wow.doge.mygame
|
|
import akka.actor.BootstrapSetup
|
|
import akka.actor.typed.ActorSystem
|
|
import akka.actor.typed.SpawnProtocol
|
|
import cats.effect.Resource
|
|
import io.odin.Logger
|
|
import monix.bio.Task
|
|
import monix.execution.Scheduler
|
|
import wow.doge.mygame.executors.ExecutorsModule
|
|
|
|
trait MainModule extends ExecutorsModule {
|
|
|
|
def actorSystemResource(
|
|
logger: Logger[Task],
|
|
scheduler: Scheduler
|
|
): Resource[Task, ActorSystem[SpawnProtocol.Command]] =
|
|
Resource.make(
|
|
logger.info("Creating Actor System") >> Task(
|
|
ActorSystem(
|
|
SpawnProtocol(),
|
|
name = "GameActorSystem",
|
|
BootstrapSetup().withDefaultExecutionContext(scheduler)
|
|
)
|
|
)
|
|
)(sys =>
|
|
for {
|
|
_ <- Task(sys.terminate())
|
|
_ <- Task.deferFuture(sys.whenTerminated)
|
|
_ <- logger.info("Actor System Terminated")
|
|
} yield ()
|
|
)
|
|
}
|