Modify code to accommodate for multiple server support NOTE: this is untested code.
Modify code to accommodate for multiple server support
NOTE: this is untested code.

- Change data type from User to UserNetworkInfo
  * To contain the server's ip address and port number. Along with the User information
  * Refactor code to accommodate the change.
- Create connectedServer vector
  * To contain information of the connected Servers.
    > Each element contains server name, ip address and port number
- Modify Constructor
  * To obtain the IP address of the server. Use that to create the UserNetworkInfo
- Rename method broadcastUserList(Message) to broadcaseUser(Message)
  * This method is ONLY used for the clients connected.
- Modify sendMessage(Message) to deal with IP address of clients in multiple servers
  * Checks if the client is connected to the server, then get the IP address and send it
  * Else send it to corresponding server that is connected to the server
- Add more switch cases in handleMessage(Message)
  * SERVER_CONNECT
    > Calls handleSERVER_CONNECT_message(Message)
  * ACK_SERVER_CONNECT
    > Calls handleACK_SERVER_CONNECT_message(Message)
  * SERVER_DISCONNECT
    > Calls handleSERVER_DISCONNECT_message(Message)
- Create and implement method broadcastUserList(Message)
  * This is used for sending client information to ONLY the connected servers
- Create and implement method connectServer(String, port)
  * Sends a SERVER_CONNECT message to the target server.
  * Adds the new server to the connectedServer list. NOTE: the server info (User object) is NULL.
  * Expects a ACK_SERVER_CONNECT message back.
    > The ACK message will contain the information of the target server (UserNetworkInfo)
- Implement method handleUSERS_message(Message)
  * This is for when a new client connects to a server. NOTE: when a server is sending an update to all other servers
  * Checks if the client is already added to the connectedUsers vector.
    > If true, then it ignores it.
    > Else
      > adds it to the connectedUsers vector
      > tells all the connected clients about it.
      > tells the connected servers about it. NOTE: this needs to be implemented
- Create and implement method handleCONNECT_SERVER_message(Message)
  * Gets the information about the server that is trying to connect and adds it to the connectedServers vector
  * Sends a ACK_SERVER_CONNECT message back.
    > Must contain the server information UserNetworkInfo
- Create handleDISCONNECT_SERVER_message(Message)
  * Currently doesn't do anything. Needs to be implemented
- Create and implement handleACK_SERVER_CONNECT_message(Message)
  * Gets the server info and updates it based on the IP address. Should also add port number as well
  * Send all the connected clients to the server that is being acknowledged. In a new thread.

Clumsy-Coder/CPSC3780-Project,Clumsy-Coder/CPSC3780-Project