def role = DispatcherRole
+ private[this] def _forwardToUserManager(m: DispatcherMessage): Unit = {
+ logger.debug("Received %s".format(m))
+ val userActorManager = _actorProvider.actorForRole(UserActorManagerRole)
+ // forward to the user actor manager, which in turn will
+ // forward to the appropriate user actor (and create one if it does not exist)
+ userActorManager forward m
+ }
+
protected def receive = {
case ActorProviderConfigured(actorProvider) ⇒
this._actorProvider = actorProvider
logger.info("Received actorProvider = %s".format(this._actorProvider))
case m @ UserRequestGetBalance(userId, timestamp) ⇒
- logger.debug("Received %s".format(m))
- val userActorManager = _actorProvider.actorForRole(UserActorManagerRole)
- // forward to the user actor manager, which in turn will
- // forward to the appropriate user actor (and create one if it does not exist)
- userActorManager forward m
+ _forwardToUserManager(m)
case m @ UserRequestGetState(userId, timestamp) ⇒
- logger.debug("Received %s".format(m))
- val userActorManager = _actorProvider.actorForRole(UserActorManagerRole)
- // forward to the user actor manager, which in turn will
- // forward to the appropriate user actor (and create one if it does not exist)
- userActorManager forward m
+ _forwardToUserManager(m)
case m @ ProcessResourceEvent(resourceEvent) ⇒
- logger.debug("Received %s".format(m))
- val userActorManager = _actorProvider.actorForRole(UserActorManagerRole)
- // forward to the user actor manager, which in turn will
- // forward to the appropriate user actor (and create one if it does not exist)
- userActorManager forward m
+ _forwardToUserManager(m)
+
+ case m @ ProcessUserEvent(userEvent) ⇒
+ _forwardToUserManager(m)
}
}
\ No newline at end of file
import gr.grnet.aquarium.actor.ActorMessage
import gr.grnet.aquarium.user.UserState
import gr.grnet.aquarium.util.json.{JsonSupport, JsonHelpers}
-import gr.grnet.aquarium.logic.events.ResourceEvent
+import gr.grnet.aquarium.logic.events.{UserEvent, ResourceEvent}
/**
* This is the base class of the messages the Dispatcher understands.
}
case class ProcessResourceEvent(rce: ResourceEvent) extends DispatcherMessage
+case class ProcessUserEvent(ue: UserEvent) extends DispatcherMessage
import gr.grnet.aquarium.messaging.MessagingNames
import gr.grnet.aquarium.logic.events.{UserEvent, AquariumEvent}
import com.ckkloverdos.maybe.{NoVal, Failed, Just}
+import gr.grnet.aquarium.actor.DispatcherRole
/**
override def decode(data: Array[Byte]) = UserEvent.fromBytes(data)
- override def forward(resourceEvent: UserEvent) {}
+ override def forward(event: UserEvent) = {
+ val dispatcher = _configurator.actorProvider.actorForRole(DispatcherRole)
+ dispatcher ! ProcessUserEvent(event)
+ }
override def exists(event: UserEvent) =
_configurator.userEventStore.findUserEventById(event.id).isJust