aboutsummaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README33
1 files changed, 32 insertions, 1 deletions
diff --git a/README b/README
index 4d94406..4c48c7f 100644
--- a/README
+++ b/README
@@ -1 +1,32 @@
-todo \ No newline at end of file
+# 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)
+