Ejemplo n.º 1
0
        public void BroadcastMessage(GameMessage message)
        {
            var deadUsers = new List <User>();

            lock (gameState)
            {
                foreach (var user in gameState.Users)
                {
                    try
                    {
                        user.Callback.Notify(message);
                    }
                    catch (CommunicationException e)
                    {
                        // assume that client is down. we can't logof it now - deadlock
                        LogSaver.Log(e.Message);
                        deadUsers.Add(user);
                    }
                    catch (Exception e)
                    {
                        LogSaver.Log("FAIL!! mysterious callback exception: " + e.Message);
                    }
                }
            }

            // logoff all deadUsers
            foreach (var deadUser in deadUsers)
            {
                LogSaver.Log("User " + deadUser.Id + " is dead. Logoff");
                RoomControll.DeleteOnlineUser(deadUser);
            }
        }
Ejemplo n.º 2
0
        public void Logoff(Guid token)
        {
            var user = RoomControll.GetUserByToken(token);

            LogSaver.Log("Logoff userId=" + user.Id);
            RoomControll.DeleteOnlineUser(user);
        }