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.
|
|
package nova.monadic_sfx.actors
import akka.actor.typed._ import akka.actor.typed.scaladsl._
object Counter { sealed trait Command case object Increment extends Command final case class GetValue(replyTo: ActorRef[Value]) extends Command final case class Value(n: Int) final case object Stop extends Command
def apply(): Behavior[Command] = { Behaviors.setup(context => new Counter(context)) } }
class Counter(context: ActorContext[Counter.Command]) extends AbstractBehavior[Counter.Command](context) { import Counter._
private var n = 0
override def onMessage(msg: Command): Behavior[Counter.Command] = { msg match { case Increment => n += 1 context.log.debug("Incremented counter to [{}]", n) this case GetValue(replyTo) => replyTo ! Value(n) this case Stop => context.log.info("Recieved shutdown counter actor") Behaviors.stopped } }
override def onSignal: PartialFunction[Signal, Behavior[Counter.Command]] = { case _: Terminated => context.log.info("Recieved shutdown counter actor terminated") this case PostStop => context.log.info("Recieved shutdown counter actor poststop") this }
}
|