Ejemplo n.º 1
0
        // Method: Create new chat room.
        public override void Serve()
        {
            // Create new local chat room, assign room name, add owner of chat room.
            string chatRoomName = "S1R" + ChatRoomCount.ToString();

            ChatRoomCount++;
            LocalChatRoom newChatRoom = new LocalChatRoom(Server, chatRoomName, ClientConn.ThisUser);

            // Update chat room list.
            Server.LocalChatRoom.Add(newChatRoom);

            // Update user's current chat room.
            ClientConn.ThisUser.CurrentChatRoom = newChatRoom;

            // Remove user from main hall.
            Server.MainHall.RemoveUser(ClientConn.ThisUser);

            Console.WriteLine("Update chat room list: " + Server.LocalChatRoom.ToString());

            // Preparing the packet to echo back to client.
            Server.PacketSent.title   = MsgTitle.confirm_created.ToString();
            Server.PacketSent.time    = Server.Now;
            Server.PacketSent.content = "created " + newChatRoom.RoomName + " you can start chatting now";
            Server.PacketSent.IP      = ClientConn.ClientSocket.LocalEndPoint.ToString();
            Server.PacketSent.sender  = Server.ServerName;

            // Sending packet.
            ClientConn.sendMsg(Server.PacketSent);

            if (Server.PeerServerDict.Count != 0)
            {
                // Preparing packet to send to other servers.
                Server.PacketSent.title   = MsgTitle.add_chatroom.ToString();
                Server.PacketSent.content = chatRoomName;

                foreach (var entry in Server.PeerServerDict.Values)
                {
                    Server.PacketSent.IP = entry.ClientSocket.LocalEndPoint.ToString();
                    entry.sendMsg(Server.PacketSent);
                }
            }
        }
Ejemplo n.º 2
0
        // Method: Add an user to a chat room when they request to join.
        public override void Serve()
        {
            // Start preparing common features of packet.
            Server.PacketSent.time = Server.Now;
            Server.PacketSent.IP   = ClientConn.ClientSocket.LocalEndPoint.ToString();
            string chatRoom           = null;
            bool   roomAlreadyExisted = false;

            foreach (ChatRoom room in Server.LocalChatRoom)
            {
                // Check if the room requested exists.
                if (Server.PacketReceived.content.Equals(room.RoomName))
                {
                    roomAlreadyExisted = true;

                    // Remove user from main hall.
                    Server.MainHall.RemoveUser(ClientConn.ThisUser);

                    // Adding user to the room.
                    room.AddUser(ClientConn.ThisUser);

                    // Updating user's current room.
                    ClientConn.ThisUser.CurrentChatRoom = room;

                    // Preparing packet to be sent.
                    Server.PacketSent.content = "Joined " + room.RoomName + ". You can start sending message now";
                    Server.PacketSent.title   = MsgTitle.confirm_joined.ToString();
                    Server.PacketSent.sender  = Server.ServerName;

                    chatRoom = room.RoomName;
                    break;
                }
            }
            // If room does not exist
            if (!roomAlreadyExisted)
            {
                // Create new room and assign name.
                string        roomName    = "S1R" + ChatRoomCount.ToString();
                LocalChatRoom newChatRoom = new LocalChatRoom(Server, roomName, ClientConn.ThisUser);

                // Add chat room to server's list of chat room.
                Server.LocalChatRoom.Add(newChatRoom);

                // Remove user from main hall.
                Server.MainHall.RemoveUser(ClientConn.ThisUser);

                // Adding user to newly created room.
                newChatRoom.AddUser(ClientConn.ThisUser);

                // Updating user's current room.
                ClientConn.ThisUser.CurrentChatRoom = newChatRoom;

                // Preparing packet to be sent.
                Server.PacketSent.content = "Room does not exist. Created a new room: " + roomName;
                Server.PacketSent.title   = MsgTitle.confirm_created.ToString();
                Server.PacketSent.sender  = Server.ServerName;

                chatRoom = roomName;
            }
            ClientConn.sendMsg(Server.PacketSent);

            if (Server.PeerServerDict.Count != 0)
            {
                // Preparing packet to send to other servers.
                Server.PacketSent.title   = MsgTitle.client_to_chatroom.ToString();
                Server.PacketSent.content = chatRoom + " " + ClientConn.ThisUser.UserName;

                foreach (var entry in Server.PeerServerDict.Values)
                {
                    Server.PacketSent.IP = entry.ClientSocket.LocalEndPoint.ToString();
                    entry.sendMsg(Server.PacketSent);
                }
            }
        }