propagate fen events to tournament hubs

This commit is contained in:
Thibault Duplessis 2012-09-16 12:38:39 +02:00
parent 3629a4bf9e
commit f341a2255c
8 changed files with 15 additions and 8 deletions

View file

@ -346,8 +346,7 @@ case class DbGame(
} }
def isBeingPlayed = def isBeingPlayed =
!finishedOrAborted && updatedAt.fold( !finishedOrAborted && updatedAt.fold(_ > DateTime.now - 20.seconds, false)
_ > DateTime.now - 20.seconds, false)
def hasBookmarks = bookmarks > 0 def hasBookmarks = bookmarks > 0

View file

@ -13,9 +13,10 @@ import play.api.Play.current
final class MoveNotifier( final class MoveNotifier(
siteHubName: String, siteHubName: String,
lobbyHubName: String, lobbyHubName: String,
tournamentHubMasterName: String,
countMove: () Unit) { countMove: () Unit) {
lazy val hubRefs = List(siteHubName, lobbyHubName) map { name lazy val hubRefs = List(siteHubName, lobbyHubName, tournamentHubMasterName) map { name
Akka.system.actorFor("/user/" + name) Akka.system.actorFor("/user/" + name)
} }

View file

@ -44,6 +44,7 @@ final class RoundEnv(
lazy val moveNotifier = new MoveNotifier( lazy val moveNotifier = new MoveNotifier(
siteHubName = ActorSiteHub, siteHubName = ActorSiteHub,
lobbyHubName = ActorLobbyHub, lobbyHubName = ActorLobbyHub,
tournamentHubMasterName = ActorTournamentHubMaster,
countMove = countMove) countMove = countMove)
lazy val socket = new Socket( lazy val socket = new Socket(

View file

@ -7,7 +7,7 @@ import play.api.templates.Html
trait AssetHelper { trait AssetHelper {
val assetVersion = 84 val assetVersion = 85
def cssTag(name: String) = css("stylesheets/" + name) def cssTag(name: String) = css("stylesheets/" + name)

View file

@ -1,7 +1,7 @@
package lila package lila
package tournament package tournament
import socket.{ History, Broom, Close, GetNbMembers, GetUsernames, NbMembers, SendTo } import socket.{ History, Broom, Close, GetNbMembers, GetUsernames, NbMembers, SendTo, Fen }
import akka.actor._ import akka.actor._
import akka.actor.ReceiveTimeout import akka.actor.ReceiveTimeout
@ -59,13 +59,15 @@ final class HubMaster(
sender ! Nil sender ! Nil
) )
case GetTournamentIds => hubs.keys case GetTournamentIds hubs.keys
case GetUsernames Future.traverse(hubs.values) { hub case GetUsernames Future.traverse(hubs.values) { hub
(hub ? GetUsernames).mapTo[Iterable[String]] (hub ? GetUsernames).mapTo[Iterable[String]]
} map (_.flatten) pipeTo sender } map (_.flatten) pipeTo sender
case msg @ NbMembers(_) hubs.values foreach (_ ! msg) case msg @ NbMembers(_) hubs.values foreach (_ ! msg)
case msg @ Fen(_, _, _) hubs.values foreach (_ ! msg)
} }
private def mkHub(tournamentId: String): ActorRef = private def mkHub(tournamentId: String): ActorRef =

View file

@ -14,7 +14,7 @@ import scalaz.effects._
import user.User import user.User
import game.DbGame import game.DbGame
import socket.{ PingVersion, Quit, Resync } import socket.{ PingVersion, Quit, Resync, LiveGames }
import socket.Util.connectionFail import socket.Util.connectionFail
import security.Flood import security.Flood
import implicits.RichJs._ import implicits.RichJs._
@ -77,6 +77,9 @@ final class Socket(
case Some("p") e int "v" foreach { v case Some("p") e int "v" foreach { v
hub ! PingVersion(uid, v) hub ! PingVersion(uid, v)
} }
case Some("liveGames") e str "d" foreach { ids
hub ! LiveGames(uid, ids.split(' ').toList)
}
case Some("talk") for { case Some("talk") for {
username member.username username member.username
data e obj "d" data e obj "d"

View file

@ -93,5 +93,4 @@ $(function() {
name: "tournament" name: "tournament"
} }
})); }));
$('body').trigger('lichess.content_loaded');
}); });

2
todo
View file

@ -46,3 +46,5 @@ tournament crowd
tournament monitor tournament monitor
all hub members should use userIds rather than usernames all hub members should use userIds rather than usernames
tournament miniboards are not updating tournament miniboards are not updating
finish games when tournament is over
tournament players are winning one point just by having a game in progress!