Newer
Older
support / akka-persistence / src / main / scala / fiftyforms / akka / AkkaActorSystem.scala
package works.iterative.akka

import zio.*
import akka.actor.typed.ActorSystem
import akka.actor.typed.scaladsl.Behaviors
import akka.cluster.typed.Cluster
import akka.cluster.typed.Join

case class AkkaActorSystem(system: ActorSystem[?]):
  val joinSelf: Task[Unit] = Task.attempt {
    val cluster = Cluster(system)
    cluster.manager ! Join(cluster.selfMember.address)
  }

object AkkaActorSystem:
  def empty(name: String): TaskLayer[AkkaActorSystem] =
    (for system <- Task.attempt(ActorSystem(Behaviors.empty, name))
    yield AkkaActorSystem(system)).toLayer