make lobby actor broom asynchronous

This commit is contained in:
Thibault Duplessis 2013-09-25 23:05:20 +02:00
parent 5340952d32
commit 8a724366f5
2 changed files with 9 additions and 6 deletions

View file

@ -48,14 +48,16 @@ private[lobby] final class Lobby(
}
}
case Broom blocking {
socket ? GetUids mapTo manifest[Iterable[String]] addEffect { uids
(HookRepo openNotInUids uids.toSet) foreach remove
HookRepo.cleanupOld foreach remove
}
case Broom socket ? GetUids mapTo manifest[Iterable[String]] foreach { uids
val hooks = {
(HookRepo openNotInUids uids.toSet) ::: HookRepo.cleanupOld
}.toSet
if (hooks.nonEmpty) self ! RemoveHooks(hooks)
}
case Resync socket ! HookIds(HookRepo.list map (_.id))
case RemoveHooks(hooks) hooks foreach remove
case Resync socket ! HookIds(HookRepo.list map (_.id))
}
private def remove(hook: Hook) = {

View file

@ -22,6 +22,7 @@ case class Connected(enumerator: JsEnumerator, member: Member)
case class WithHooks(op: Iterable[String] Unit)
case class AddHook(hook: Hook, user: Option[User])
case class RemoveHook(hookId: String)
case class RemoveHooks(hooks: Set[Hook])
case class CancelHook(uid: String)
case class BiteHook(hookId: String, uid: String, userId: Option[String])
case class JoinHook(uid: String, hook: Hook, game: Game)