Grading Criteria for Project Phase 2 (Networking)

FEATURE POINTS
[For Parts I & II] Overall Program Structure 20
GUI code still works! 5
Correct "main" handling 5
Ability to configure server IP address and port number (either graphically or via the command line) 5
Good modularity, with networking code in net.py which loads correctly 5
[For Part I] Basic Protocol Functionality 30
Correct HELLO handling
  • Sends well-formatted HELLO message at startup time
10
Correct ONLINE_USERS handling
  • Should receive and process ONLINE_USERS messages from server
  • Should update online users list in GUI appropriately
  • The current user should not be displayed in the list of online users
10
Correct GOODBYE handling
  • Send GOODBYE message at the time the client shuts down
10
[For Part II] Conversation Management 50
Should be able to support multiple chats at one time
  • In other words, everything below should work when there are two or more chats going
10
Correct INVITE and CHAT_ID handling
  • Send INVITE message when new conversation is attempted
  • Receive CHAT_ID message from server and associate the received chat ID number with the chat object in your program
  • Optionally: show a "pending" window, or use other mechanism to indicate no one else is in the conversation
10
Correct INVITATION and ACCEPT/REJECT handling
  • Display invitation window upon receipt of an INVITATION from another different user
  • Generate an ACCEPT or REJECT message to the server, depending on the user's action in the invitation window
5
Correct JOINED and DECLINED handling
  • Receive JOINED and DECLINED messages from the server indicating that a user has accepted or rejected your invitation
  • Notify the user of this new status
5
Correct LEAVE handling
  • Generate LEAVE message to server when user exits a chat
5
Correct LEFT handling
  • Receive LEFT messages from the server when someone leaves a chat you're in
  • Correctly update the state of the chat, and display the updated chat membership
5
Correct SEND_MESSAGE handling
  • Sending text should cause a SEND_MESSAGE to be sent to the server
  • Sent text should appear (once) in the transcript
5
Correct MESSAGE handling
  • Correctly handle received MESSAGEs from the server
  • Any received text should appear (once) in the transcript, tagged by whom it is from
5
[For Part II] Bonus 20
Server enhancements (sending icons, for instance) 10
Exploit CHANGE_STATUS messages to let users change online status, display this in the GUI, propagate to other users 5
Exception handling above and beyond the call of duty (survive server crashes, malformatted messages from server, etc.) 5