<commit_before>= Seattlechat =

This assignment focuses on designing and implementing a Seattle chat service.   The Seattle chat service has three main components, a central Seattlechat server whose focus is to relay messages, a collection of Seattlechat translators that change messages into different formats for display, and a Seattlechat client which is simply a standard webbrowser.   Each Seattlechat client has its own translator, but many translators connect to the same Seattlechat server.

•  Seattlechat server. Your Seattlechat server should accept connections on your GENI port using waitforconn.   Seattlechat is a multiway text conferencing system, and so the server must be able to accept and manage multiple connections simultaneously. Once two or more sources are connected, all bytes sent to the server are “relayed” to all other computers listening to the service. The server should separate text by source by sending it line by line (lines end with '\n'), labeling each line with the name of the client who sourced that particular message.

•  Seattlechat translator.  The Seattlechat translator connects to a Seattlechat server and translates messages for the client.   In all cases, the Seattlechat translator provides a web page that has the chat output and accepts incoming chat messages (in the form of HTTP POST messages).   There are three translators you will need to implement: 

 * normal: This translator does not change incoming or outgoing data.

 * reverse: This translator reverses the order of all incoming and outgoing data streams (hint: data[::-1] is the reverse of data).   Names and other data should not be reversed.   Note that input typed by a user behind the reverse translator will be backwards!

 * Pig Latin: This translator changes words to and from [http://en.wikipedia.org/wiki/Pig_Latin Pig Latin].   Your Pig Latin translator should use the hyphenated form and be able to reverse translate data from the client which is in hyphenated form.


* Client (i.e. web browser).   You can use a standard webbrowser as a client.   It must interact with a translator instead of contacting the server directly.

To test your code, we suggest you first build the server and test using a simple program that opens connections and sends strings.   Following this, build the normal translator using the webserver from the previous assignment to pass messages and display output.   After this works, add the reverse and Pig Latin translators.<commit_msg>Revision 8 of EducationalAssignments/ChatServer<commit_after>= Seattlechat =

This assignment focuses on designing and implementing a Seattle chat service.   The Seattle chat service has three main components, a central Seattlechat server whose focus is to relay messages, a collection of Seattlechat translators that change messages into different formats for display, and a Seattlechat client which is simply a standard webbrowser.   Each Seattlechat client has its own translator, but many translators connect to the same Seattlechat server.

•  Seattlechat server. Your Seattlechat server should accept connections on your GENI port using waitforconn.   Seattlechat is a multiway text conferencing system, and so the server must be able to accept and manage multiple connections simultaneously. Once two or more sources are connected, all bytes sent to the server are “relayed” to all other computers listening to the service. The server should separate text by source by sending it line by line (lines end with '\n'), labeling each line with the name of the client who sourced that particular message.

•  Seattlechat translator.  The Seattlechat translator connects to a Seattlechat server and translates messages for the client.   In all cases, the Seattlechat translator provides a web page that has the chat output and accepts incoming chat messages (in the form of HTTP POST messages).   There are three translators you will need to implement: 

 * normal: This translator does not change incoming or outgoing data.

 * reverse: This translator reverses the order of all incoming and outgoing data streams (hint: data[::-1] is the reverse of data).   Names and other data should not be reversed.   Note that input typed by a user behind the reverse translator will be backwards!

 * Pig Latin: This translator changes words to and from [http://en.wikipedia.org/wiki/Pig_Latin Pig Latin].   Your Pig Latin translator should use the hyphenated form and be able to reverse translate data from the client which is in hyphenated form.


• Client (i.e. web browser).   You can use a standard webbrowser as a client.   It must interact with a translator instead of contacting the server directly.

To test your code, we suggest you first build the server and test using a simple program that opens connections and sends strings.   Following this, build the normal translator using the webserver from the previous assignment to pass messages and display output.   After this works, add the reverse and Pig Latin translators.
{'fraction_non_alphanumeric': 0.03168593064966122, 'fraction_numerical': 0.0005978477481068154, 'mean_word_length': 4.497261774370208, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1066794', 'n_tokens_mistral': 1111, 'n_tokens_neox': 1047, 'n_words': 759}