Files
CoqDecks/server/app/controllers/massivedecks/NotificationHandler.scala
T
2015-12-04 18:12:55 +00:00

32 lines
987 B
Scala

package controllers.massivedecks
import akka.actor.{Actor, ActorRef, Props}
import controllers.massivedecks.game.Actions.Lobby.{Unregister, Register}
import controllers.massivedecks.game.Actions.Store.LobbyAction
import models.massivedecks.Player.Secret
import play.api.libs.json.Json
import models.massivedecks.Player.Formatters._
class NotificationHandler(val lobbyId: String, val store: ActorRef, val out: ActorRef) extends Actor {
var secret: Option[Secret] = None
override def receive = {
case message: String =>
secret = Json.parse(message).validate[Secret].asOpt
if (secret.isDefined)
{
store ! LobbyAction(lobbyId, Register(secret.get, out))
}
}
override def postStop(): Unit = {
if (secret.isDefined) {
store ! LobbyAction(lobbyId, Unregister(secret.get, out))
}
}
}
object NotificationHandler {
def props(lobbyId: String, store: ActorRef, out: ActorRef) = Props(new NotificationHandler(lobbyId, store, out))
}