diff options
| author | sotech117 <michael_foiani@brown.edu> | 2023-09-25 23:02:09 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-25 23:02:09 -0400 |
| commit | 28679eed6e7f8f2e410b7a04ad1f02c4b516a756 (patch) | |
| tree | d10499d576e87e0609ef82eaa3bd7db4955fd343 /README | |
| parent | cf8f41c1ef77d43645eb6082ba76d4177ea6fbd4 (diff) | |
Update and rename README to README.md
Diffstat (limited to 'README')
| -rw-r--r-- | README | 32 |
1 files changed, 0 insertions, 32 deletions
@@ -1,32 +0,0 @@ -# Project Title -Snowcast - -## Description - -A music streaming server consisting of three programs: the server, the client controller, & the client listener. - -## Getting Started - -### Making the executables - -* Ensure you have gcc installed, as that is what the make file uses. -* Run `make` in your terminal to make the 3 executables `./snowcast_server`, `./snowcast_control`, & `./snowcast_listener`! - -### Executing program - -* To run the server, type in `./snowcast_server` into your terminal. It wil tell you the necessary arguments. -* To run the controller, type `./snowcast_control` into your terminal. -* To run the listener, type `./snowcast_listener` into your terminal. - -### Program Design - -* A "select_thread" controls accepting new clients and responding to commands from clients. It redirects the logic to separate helper functions to send replies. -* The station information is held by an array. Each station has a thread that broadcasts to the listeners every half-second (at half the rate per second). During the downtime of this half-second, the station file is read into a buffer and threads are created off of this buffer, waiting to be released. At the top of the second, the station thread then bradcasts a `cond` variable to start all threads that send the station. -* The `users` pointer containing the user data (along with the separate stations pointer) has a mutex `users_mutex` that allows safe-thread write and deletion. This pointer is also dynamic, using realloc when more memory is needed. There are a few memory optimizations implemented (see `init_user(...)`). - - -## Acknowledgments - -* [Beej's Guide to Network Programming](https://beej.us/guide/bgnet/) -* [Lecture Example Code](https://github.com/brown-csci1680/lecture-examples/tree/main) - |
