Messages
The pieces of GEE are all about passing Messages back and forth to one another. A Message contains a subject object that it's about, a list of message types it represents and an accumulating list of attachments for each sender that has touched the message.
Senders and Receivers
Senders and Receivers constitue the most basic data hookups in GEE. A Sender will hold onto a group of Receivers and send them a message whenver the sender feels something interesting happens. A receiver only needs to be able to handle the periodic incoming objects. For example, an eventdc is a Sender. It creates a Message for each event it gathers and sets the subect to the event, sets the type to add and adds itself as an attachment to the message. It then sends the message on to its receivers. A CSV event writer could be a receiver. When added to the eventdc sender it gets all the events returned from the server and appends them a line at a time to its CSV file.
Filters
Filters control the flow from senders to receivers. It only allows items matching certain criteria appearing from its senders through to its receivers. For example, if we added an event filter with a 5.0 magnitude subsetter between the eventdc and csv event writer from the previous example, only events of magnitude greater than 5 would be written to the csv file.
Common subsetters have their own filter like MagnitudeFilter that allows them to be created without actively adding a subsetter.
Lists
A list is a filter that holds on to the subject of its messages. The list allows access to random items, and iteration through its contents. In addition to sending an add message through to its receivers when a new subject shows up, it also sends messages of removed and cleared types.
Interrogator
Extracts the piece of data a receiver is interested in a message i.e. for a seismogram subject message going through a magnitude filter an interrogator would extract the event from the seismogram so the magnitude filter could check to pass it on.