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: UI backend, GlobalDataStorage and Peers).
  • 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

Class diagram of the Dscuss application is represented below.

class_diagram View in full resolution.

The source of the scheme can be opened and edited in Dia.