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.
49 lines
1.3 KiB
49 lines
1.3 KiB
package nova.monadic_sfx.actors
|
|
|
|
import io.odin.Logger
|
|
import monix.eval.Task
|
|
import cats.effect.Resource
|
|
import akka.actor._
|
|
import akka.actor.typed.scaladsl.adapter._
|
|
import akka.actor.typed.scaladsl.Behaviors
|
|
import com.softwaremill.macwire._
|
|
import akka.actor.typed.Behavior
|
|
import akka.actor.typed.DispatcherSelector
|
|
|
|
trait ActorModule {
|
|
def actorResource(logger: Logger[Task]): Resource[Task, ActorSystem] =
|
|
Resource.make(logger.info("Creating Actor System") >> Task {
|
|
ActorSystem(
|
|
name = "FXActorSystem"
|
|
)
|
|
})(sys =>
|
|
logger.info("Shutting down actor system") >> Task.fromFuture(
|
|
sys.terminate()
|
|
) >> logger.info("Actor System terminated")
|
|
)
|
|
|
|
def testActor(
|
|
system: ActorSystem
|
|
): akka.actor.typed.ActorRef[Counter.Command] = {
|
|
val behaviour: Behavior[Counter.Command] =
|
|
Behaviors.setup(context => wire[Counter])
|
|
system.spawn(
|
|
behaviour,
|
|
"CounterActor",
|
|
DispatcherSelector.fromConfig("javafx-dispatcher")
|
|
)
|
|
}
|
|
|
|
def testActorL(
|
|
system: ActorSystem
|
|
): Task[akka.actor.typed.ActorRef[Counter.Command]] =
|
|
Task {
|
|
val behaviour: Behavior[Counter.Command] =
|
|
Behaviors.setup(context => wire[Counter])
|
|
system.spawn(
|
|
behaviour,
|
|
"CounterActor",
|
|
DispatcherSelector.fromConfig("javafx-dispatcher")
|
|
)
|
|
}
|
|
}
|