Support for sending messages from user actors
authorGeorgios Gousios <gousiosg@gmail.com>
Thu, 22 Mar 2012 09:35:24 +0000 (11:35 +0200)
committerGeorgios Gousios <gousiosg@gmail.com>
Thu, 22 Mar 2012 09:42:34 +0000 (11:42 +0200)
src/main/scala/gr/grnet/aquarium/user/actor/UserActor.scala

index 12b03b0..527bd29 100644 (file)
@@ -45,6 +45,7 @@ import gr.grnet.aquarium.util.Loggable
 import gr.grnet.aquarium.util.date.TimeHelpers
 import com.ckkloverdos.maybe.{Failed, NoVal, Just}
 import gr.grnet.aquarium.logic.accounting.RoleAgreements
+import gr.grnet.aquarium.messaging.AkkaAMQP
 
 
 /**
@@ -53,6 +54,7 @@ import gr.grnet.aquarium.logic.accounting.RoleAgreements
  */
 
 class UserActor extends AquariumActor
+                   with AkkaAMQP
                    with ReflectiveAquariumActor
                    with Loggable {
   @volatile
@@ -62,6 +64,8 @@ class UserActor extends AquariumActor
   @volatile
   private[this] var _timestampTheshold: Long = _
 
+  private[this] lazy val messenger = producer("aquarium")
+
   def role = UserActorRole
 
   private[this] def _configurator: Configurator = Configurator.MasterConfigurator
@@ -184,7 +188,7 @@ class UserActor extends AquariumActor
 
     DEBUG("New active status = %s".format(newActive))
 
-    this._userState = this._userState.copy( activeStateSnapshot = newActive )
+    this._userState = this._userState.copy(activeStateSnapshot = newActive)
   }
 
   def onProcessUserEvent(event: ProcessUserEvent): Unit = {
@@ -192,7 +196,6 @@ class UserActor extends AquariumActor
     if(userEvent.userID != this._userId) {
       ERROR("Received %s but my userId = %s".format(userEvent, this._userId))
     } else {
-//      ensureUserState()
       if(userEvent.isCreateUser) {
         processCreateUser(userEvent)
       } else if(userEvent.isModifyUser) {
@@ -230,7 +233,15 @@ class UserActor extends AquariumActor
 
   override def postStop {
     DEBUG("Stopping, saving state")
-    //saveUserState
+    saveUserState
+  }
+
+  override def preRestart(reason: Throwable) {
+    DEBUG("Actor failed, restarting")
+  }
+
+  override def postRestart(reason: Throwable) {
+    DEBUG("Actor restarted succesfully")
   }
 
   def knownMessageTypes = UserActor.KnownMessageTypes