Brief description of the architecture (key design decisions)
- It's a long-duration service - it runs for extended amount of time, time spent for establishing connection between peers is much smaller than the average lifetime of the connection.
- It's an internal service - service that receives requests is the same service that handles the request.
- It's a modular service (decomposed into hierarchically related tasks:
- It has a layered structure (TBD: describe layers).
- It's a standing server - it continues to run beyond lifetime of any peer connection it establishes.
- It'a a statically configured server - you need to restart the server to apply changes in the config file.
- It's a concurrent server - it handles multiple peer connections simultaneously.
- It's a single thread server, which uses the Proactor pattern for event handling (glib's event loop occupies the thread).
Class diagram of the Dscuss application is represented below.
View in full resolution.