In a running ECS, most major objects are a part of a single object hierarchy, extending the class com.eventgnosis.system.SystemObject.
Specializations of SystemObject
fall into one of the following four basic categories:
The lifetime of each SystemObject
is managed by its parent through a simple hierarchy of SystemObjects.
At the very top (root) is the RuntimeController SystemObject, which is responsible for overall system startup, running and shutdown. Directly under the RuntimeController are the various management SystemObjects for the major system areas (Sources, Adapters, FilterStacks, Destinations, Queues, Configuration). Each of these managers in turn handles the lifetime of its children by creating, monitoring and shutting them down, if necessary.
Finally, under each of these managers exist SystemObjects
according to their classification. See accompanying “Runtime SystemObject
Hierarchy” PowerPoint diagram. There are additional lower level hierarchies for filters, which exist under a threaded parent filter stack, as well as Source implementations where a protocol can have a pool of slave listeners.
These objects are then horizontally connected to each other by their destination attributes, resulting in an interconnected, directed graph of “worker” objects which manage & route events through the system. This complex graph is configured according to a set of ECA’s at startup.