Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Rudimentary Client-Server Message Board Ricky Landry COP5611 – Operating Systems Design Principles University of Central Florida April 16, 2012 Fundamental Requirements Ability to create topics Ability to create comments associated with a topic Ability to produce information on the author of a topic or comment Ability to produce the timestamp of creation and last modification time of a topic or a comment Ability to remove a topic or comment (only if requested by the author) 2 Critical Design Decisions Client-Server Architecture Multi-threaded Server Stateless Messaging Protocol Java Swing Client Front-End (GUI) 3 Message Board Database Server-side database was written specifically for the application to explore design challenges Multi-threaded server design required mutually exclusive access to the database to handle concurrency and atomicity concerns Accomplished through the use of object locks built into the Java language synchronized(this){ … } wraps database access calls 4 Server Database Design Singleton-patterned database consists of: List of MbdbTopic objects, stored as a Hashtable List of MbdbComment objects, stored as a Hashtable 5 Server Database Design MbdbTopic object consists of: topic name author name creation time topic header deleted state list of the comment headers of child comments 6 Server Database Design MbdbComment object consists of: comment message author name creation time comment header deleted state unique identifier of its parent topic 7 Server Database Design TopicHeader and CommentHeader Objects contain: Topic/Comment unique identifier Topic/Comment last update time Definition of TopicHeaderList and CommentHeaderList containers, respectively 8 Server Design Used the Java Serialization API for serialized object transfer between server and client. Listen socket is a Java ServerSocket object When a connection is made, the new socket connected to the client is handed off to a worker thread spawned specifically for the client 9 Server Design 10 Protocol Design Defines the following aspects of the client-server model: Credentials Topic message data payloads Comment message data payloads Message structure Message types 11 Protocol Design Client-to-Server Message Types: CREATE_TOPIC CREATE_COMMENT REMOVE_TOPIC REMOVE_COMMENT GET_TOPIC_HEADERS GET_TOPIC_OBJECT GET_COMMENT_OBJECT CREDENTIALS CLOSING_CONNECTION 12 Protocol Design Server-to-Client Message Types: TOPIC_HEADERS_REPLY TOPIC_OBJECT_REPLY COMMENT_OBJECT_REPLY AUTHETICATION_SUCCESS AUTHETICATION_FAILURE INVALID_TOPIC_ID INVALID_COMMENT_ID INVALID_REPLY_RECEIVED 13 Client Database Design The client has its own database that contains the client state Has four containers: One One One One containing MbdbTopic objects containing MbdbComment objects containing the read state for each topic containing the read state for each comment Defines wrappers for Topic/Comment objects and their respective read state 14 Client Database Design 15 Client Controller Design Responsible for client database management and access Updates the client database with server data Provides current (undeleted) client data to the front-end Responsible for communication with the server Responsible for managing client credentials 16 Client Front-End Design Built using the Java Swing API Provides basic interface to underlying function Topic Window Mockup Comment Window Mockup 17 Client Front-End Design 18 Client Front-End Design Topic Window Comment Window 19 Questions 20