move onStart to round and make it use the game proxy

team-info-lookup
Thibault Duplessis 2019-08-20 10:48:47 +02:00
parent 2f2ae6f2ff
commit 674beb6def
9 changed files with 23 additions and 26 deletions

View File

@ -4,6 +4,7 @@ import akka.actor._
import com.typesafe.config.Config
import scala.concurrent.duration._
import lila.game.Game
import lila.hub.TrouperMap
import lila.socket.Socket.{ SocketVersion, GetVersion }
import lila.user.User
@ -11,7 +12,7 @@ import lila.user.User
final class Env(
config: Config,
system: ActorSystem,
onStart: String => Unit,
onStart: Game.ID => Unit,
gameCache: lila.game.Cached,
lightUser: lila.common.LightUser.GetterSync,
isOnline: lila.user.User.ID => Boolean,
@ -90,7 +91,7 @@ object Env {
lazy val current: Env = "challenge" boot new Env(
config = lila.common.PlayApp loadConfig "challenge",
system = lila.common.PlayApp.system,
onStart = lila.game.Env.current.onStart,
onStart = lila.round.Env.current.onStart,
hub = lila.hub.Env.current,
gameCache = lila.game.Env.current.cached,
lightUser = lila.user.Env.current.lightUserSync,

View File

@ -75,18 +75,6 @@ final class Env(
captcher -> actorApi.NewCaptcha
}
def onStart(gameId: String) = GameRepo game gameId foreach {
_ foreach { game =>
system.lilaBus.publish(actorApi.StartGame(game), 'startGame)
game.userIds foreach { userId =>
system.lilaBus.publish(
actorApi.UserStartGame(userId, game),
Symbol(s"userStartGame:$userId")
)
}
}
}
lazy val gamesByUsersStream = new GamesByUsersStream(system)
lazy val bestOpponents = new BestOpponents

View File

@ -80,7 +80,7 @@ object Env {
config = lila.common.PlayApp loadConfig "lobby",
db = lila.db.Env.current,
hub = lila.hub.Env.current,
onStart = lila.game.Env.current.onStart,
onStart = lila.round.Env.current.onStart,
blocking = lila.relation.Env.current.api.fetchBlocking,
playban = lila.playban.Env.current.api.currentBan _,
gameCache = lila.game.Env.current.cached,

View File

@ -6,8 +6,7 @@ import lila.hub.FutureSequencer
final class Env(
system: akka.actor.ActorSystem,
playbanApi: lila.playban.PlaybanApi,
onStart: String => Unit
playbanApi: lila.playban.PlaybanApi
) {
private lazy val hookThieve = new HookThieve(system.lilaBus)
@ -22,7 +21,7 @@ final class Env(
private lazy val gameStarter = new GameStarter(
bus = system.lilaBus,
onStart = onStart,
onStart = gameId => system.lilaBus.publish(gameId, 'gameStartId),
sequencer = new FutureSequencer(
system = system,
executionTimeout = 5.seconds.some,
@ -35,7 +34,6 @@ object Env {
lazy val current: Env = "pool" boot new Env(
system = lila.common.PlayApp.system,
playbanApi = lila.playban.Env.current.api,
onStart = lila.game.Env.current.onStart
playbanApi = lila.playban.Env.current.api
)
}

View File

@ -28,7 +28,6 @@ final class Env(
notifyApi: lila.notify.NotifyApi,
uciMemo: lila.game.UciMemo,
rematch960Cache: lila.memo.ExpireSetMemo,
onStart: String => Unit,
divider: lila.game.Divider,
prefApi: lila.pref.PrefApi,
historyApi: lila.history.HistoryApi,
@ -105,6 +104,9 @@ final class Env(
roundMap.tell(pov.gameId, Resign(pov.playerId))
}
}
},
'gameStartId -> {
case gameId: String => onStart(gameId)
}
)
@ -246,6 +248,15 @@ final class Env(
lazy val noteApi = new NoteApi(db(CollectionNote))
def onStart(gameId: Game.ID): Unit = proxy game gameId foreach {
_ foreach { game =>
bus.publish(lila.game.actorApi.StartGame(game), 'startGame)
game.userIds foreach { userId =>
bus.publish(lila.game.actorApi.UserStartGame(userId, game), Symbol(s"userStartGame:$userId"))
}
}
}
MoveMonitor.start(system, moveTimeChannel)
system.actorOf(
@ -296,7 +307,6 @@ object Env {
notifyApi = lila.notify.Env.current.api,
uciMemo = lila.game.Env.current.uciMemo,
rematch960Cache = lila.game.Env.current.cached.rematch960,
onStart = lila.game.Env.current.onStart,
divider = lila.game.Env.current.divider,
prefApi = lila.pref.Env.current.api,
historyApi = lila.history.Env.current.api,

View File

@ -45,7 +45,7 @@ object Env {
config = lila.common.PlayApp loadConfig "setup",
db = lila.db.Env.current,
fishnetPlayer = lila.fishnet.Env.current.player,
onStart = lila.game.Env.current.onStart,
onStart = lila.round.Env.current.onStart,
prefApi = lila.pref.Env.current.api,
relationApi = lila.relation.Env.current.api,
gameCache = lila.game.Env.current.cached,

View File

@ -144,7 +144,7 @@ object Env {
db = lila.db.Env.current,
hub = lila.hub.Env.current,
lightUser = lila.user.Env.current.lightUser,
onGameStart = lila.game.Env.current.onStart,
onGameStart = lila.round.Env.current.onStart,
isOnline = lila.user.Env.current.isOnline,
asyncCache = lila.memo.Env.current.asyncCache,
proxyGame = lila.round.Env.current.proxy.game _

View File

@ -7,7 +7,7 @@ import lila.user.User
final class AutoPairing(
duelStore: DuelStore,
onStart: String => Unit
onStart: Game.ID => Unit
) {
def apply(tour: Tournament, pairing: Pairing, usersMap: Map[User.ID, User], ranking: Ranking): Fu[Game] = {

View File

@ -216,7 +216,7 @@ object Env {
roundMap = lila.round.Env.current.roundMap,
lightUserApi = lila.user.Env.current.lightUserApi,
isOnline = lila.user.Env.current.isOnline,
onStart = lila.game.Env.current.onStart,
onStart = lila.round.Env.current.onStart,
historyApi = lila.history.Env.current.api,
trophyApi = lila.user.Env.current.trophyApi,
notifyApi = lila.notify.Env.current.api,