John Hofman's Design Study
From CSSEMediaWiki
(Difference between revisions)
John Hofman (Talk | contribs) |
John Hofman (Talk | contribs) |
||
Line 25: | Line 25: | ||
==Initial Design== | ==Initial Design== | ||
This is the design which is fully functional. | This is the design which is fully functional. | ||
+ | |||
+ | [UML] | ||
+ | |||
+ | =Description= | ||
+ | |||
+ | Concurrent Design: | ||
+ | This design is an event driven system. There are two threads. | ||
+ | *The Inbox encapsulates a thread that reads and responds to packets from the server via the Socket. | ||
+ | *The GUI uses a thread to respond to user input and manipulate Chats and the UserManager. | ||
+ | |||
+ | Class Descriptions: | ||
+ | * Socket/ClientSocket: The Socket encapsulates a TCP Socket. It provides an interface to read/write packets to the socket. | ||
+ | * Inbox: Encapsulates a thread that reads packets from the ClientSocket, unpacks them and executes operations on the Chats and the UserManager.The Inbox also contains a map that links Chat objects to their ChatID's (This is nasty, why does the inbox have this map). | ||
+ | * Chat: Each chat represents a conversation with another user. The chat maintians a list of messagees | ||
==Other Stuff== | ==Other Stuff== | ||
+ | Stuff that needs fixing: | ||
+ | * Chat map in Inbox | ||
+ | * Switch smell in Inbox to deal with packets? Polymorphism..? Which means that Socket will need a switch. | ||
+ | |||
[[John Hofman US001| Simple chat]] | [[John Hofman US001| Simple chat]] | ||
[[John Hofman's Log|Log]] | [[John Hofman's Log|Log]] |
Revision as of 00:54, 26 August 2010
Contents |
My Project
This design study was introduced by my ENEL428 software assignment. The purpose of the assignment was to design a prototype of an Instant Messenger System using concurrent programming. The system was broken into two separate parts a client and a server. This design study is regarding the client program.
Design Study
The initial system uses a simple login model, a user attempts to log in with just a username which the server accepts or rejects.
Functional requirements of the client:
- Connect to a server.
- Login.
- Logout.
- Display the other users online.
- Start a conversation with another online user.
- Post Messages in a conversation.
- Invite other online users to a conversation.
- Leave a conversation.
Constraints:
- C++
- Uses POSIX threads for concurrency.
Room for Expansion:
- Other protocols, XMPP etc.
- Other GUI implementations, currently uses fltk-1.1.9
Initial Design
This is the design which is fully functional.
[UML]
Description
Concurrent Design: This design is an event driven system. There are two threads.
- The Inbox encapsulates a thread that reads and responds to packets from the server via the Socket.
- The GUI uses a thread to respond to user input and manipulate Chats and the UserManager.
Class Descriptions:
- Socket/ClientSocket: The Socket encapsulates a TCP Socket. It provides an interface to read/write packets to the socket.
- Inbox: Encapsulates a thread that reads packets from the ClientSocket, unpacks them and executes operations on the Chats and the UserManager.The Inbox also contains a map that links Chat objects to their ChatID's (This is nasty, why does the inbox have this map).
- Chat: Each chat represents a conversation with another user. The chat maintians a list of messagees
Other Stuff
Stuff that needs fixing:
- Chat map in Inbox
- Switch smell in Inbox to deal with packets? Polymorphism..? Which means that Socket will need a switch.