/ / Akka: как да проверите какво поведение актьорът има в момента - скала, akka

Акка: как да проверим какво поведение има актьорът в момента - скала, akka

Моят актьор има две поведения:

context.become(running)
context.become(stopped)

Как да определите в един и същ актьор какви са текущите поведения? Ето пълния код: http://pastie.org/private/r1dfdss62kcz9e2fzorrq

Нова версия http://pastie.org/private/b2h65n2dthjhxlnuq5caw

Реших да преместя кода на връзките, защото stackoverflow не ми позволява да публикувам кода тук.

Отговори:

0 за отговор № 1

Можете да използвате Akka FSM, за да приложите същото поведение, вместо да използвате стана. С Akka FSM трябва да можете да се регистрирате за известия за промени в държавата. Се отнасят http://doc.akka.io/docs/akka/snapshot/scala/fsm.html#External_Monitoring.

sealed trait State
case object Running extends State
case object Stopped extends State

case object Data

case object KeepAlive
case object Stop
case object CheckIfRunning

class EventsFeedActor extends Actor with FSM[State, Data.type] {
startWith(Stopped, Data)
when(Stopped) {
case Event(KeepAlive, Data) => {
???
goto(Running)
}
case Event(CheckIfRunning, Data) => {
???
stay
}
}

when(Running) {
case Event(Stop, Data) => {
???
goto(Stopped)
}
case Event(CheckIfRunning, Data) => {
???
stay
}
}
}

С това заинтересованите участници могат да изпратят SubscribeTransitionCallBack(self) до EventFeedActor и ще получите CurrentState(actorRef, stateName) незабавно и а Transition(actorRef, oldState, newState) за всеки следващ държавен преход.