Exemple #1
0
        public Client(Socket client)
        {
            _socket = client;


            //
            // Create a new room for the new connecting client.
            //

            var roomManager = RoomManager.GetInstance();

            Room = roomManager.CreateNewRoom(this);


            //
            // Start the heartbeat timer.
            //

            _heartBeatTimer = new Timer(CheckHeartBeatTimer, null, 20000, TimerInterval);


            //
            // Set the client user state to default value.
            //

            _clientUserState = ClientUserState.InLobby;
        }
        public void RemoveClient(Client client)
        {
            lock (clientListLock)
            {
                _globalClientList.Remove(client);
            }

            var db = Database.GetInstance();

            if (client.UserInfo == null)
            {
                return;
            }

            var user = db.GetUserByEmail(client.UserInfo.EmailAddress);

            var friend = MessageReceiver.GetFriendFromUser(user);


            //
            // Remove the user from his room in case he is still part of one.
            //

            var roomManager = RoomManager.GetInstance();

            roomManager.RemoveMemberfromRoom(client.Room.Host, client);


            //
            // Send a message saying that the user logged off to all of his friends who are online.
            //

            var friends = db.GetFriends(client.UserInfo.EmailAddress);

            if (null == friends)
            {
                return;
            }

            var onlineFriends = new List <Client>();

            foreach (user frd in friends)
            {
                var c = GetClientFromEmailAddress(frd.email);
                if (null != c)
                {
                    onlineFriends.Add(c);
                }
            }

            MessageSender.BroadcastMessage(
                onlineFriends,
                PacketType.s_UserLoggedOut,
                friend,
                client);
        }