The major subsystems of Miranda include:
The Cluster represents the other Miranda nodes as a whole. When something happens locally that we want to tell the other nodes about, like the creation of a new session, a message is sent to the cluster.
The Network subsystem is used to communicate with the other Miranda nodes in the system. When a node wants to send another node some data, it sends a message to the Network.
The SessionManager is responsible for Sessions in the system. A Session is created when a user logs in to Miranda. When that happens the session manager also tells the Cluster about the new session.
Each of the remaining subsystems manages a set of objects. The UserManager manages Users and so on. The other subsystems also have a file associated with it. The file holds the collection, and the associated manager monitors it for changes.
The UserManager is also consulted during the logon process.
The Events and Deliveries managers are different in that they are in charge of directories instead of single files. Events and Deliveries are batched together into files that the Events and Deliveries managers are responsible for.