▼Nchoir | The choir namespace contains the code specific to the ZGChoir demonstration application |
CChoirSession | This is the class that that the Choir demo uses to implement its data-replication functionality |
CChoirThread | This class contains the MUSCLE network I/O thread that has our ChoirSession inside it |
CChoirWindow | This is the main window of the ZGChoir application |
CMusicDatabaseObject | A slight specialization of the IDatabaseObject class, just so I can add some application-specific helper methods for my various subclasses to all use |
CMusicSheet | This object is the in-memory representation of a song, as a collection of notes over time |
CMusicSheetPlayer | This object is in charge of reading the music sheet and telling Quasimodo when to ring the bells, based on the current time and settings |
CMusicSheetWidget | This widget displays a page of our MusicSheet |
CNoteAssignmentsMap | This object specifies which peers should be playing which notes |
CPlaybackState | This object holds the state of how the currently-in-memory Music sheet should be performed over time |
CQuasimodo | This object is in charge of actually ringing the local bells (using QAudioOutput and a mixer algorithm) This is done within a separate thread, so that the timing of the bell-ringing won't be affected GUI operations |
CRosterWidget | This widget displays the current table of note assignments, as contained in our NoteAssignmentsMap |
▼Nzg | The zg namespace contains the public API of the ZG library |
CIDatabaseObject | An interface for an object that represents the full contents of a ZG database |
CINetworkTimeProvider | This is an abstract interface for an object that can provide us with network-clock-time values |
CITextCommandReceiver | Interface for an object that can receive text commands from the user |
CZGDatabasePeerSession | This is a convenience class; it is the same as a ZGPeerSession except that it also knows how to create and manage some user-provided IDatabaseObjects (one per database) so that the subclass doesn't have to implement all of the Message<->IDatabaseObject plumbing manually |
CZGPeerID | A ZGPeerID is a 128-bit integer that uniquely represents a particular peer in a ZG system |
CZGPeerSession | This is the class that a user program would typically subclass from and add to a ReflectServer in order to participate in a ZG system |
CZGPeerSettings | This immutable class holds various read-only settings that will be used to define the peer's behavior |
CZGStdinSession | This is a utility class that knows how to read from the process's stdin and hand any received text commands over to the TextCommandReceived() method of the ITextCommandReceiver that is passed to its constructor |