SignalSystem defines named, one-time signals for SaffronLibrary, such as a scene becoming ready or the Data system being available. Each signal is a fact that becomes true once and stays true for the session, so other systems can wait for it instead of polling.
Purpose in SaffronLibrary
Systems often need to know that another system has finished starting up before they do their own work. SignalSystem gives these readiness facts stable, unique names and a message type that the signal bus can route. Owners raise a signal once, and any system that depends on it can subscribe, whether it subscribes before or after the signal is raised.
Key responsibilities
- Canonical signal catalog:
SaffronLibrarySignalsexposes the shared signal keys that multiple systems use (SceneReady,SystemsReady,DataSystemReady). - Consistent naming:
SignalKeyNamesbuilds each signal's string name from a shared base and segments, so names stay consistent and unique. - Signal identity and message:
SignalKeyidentifies a signal by its name, andSignalis the message that carries a key when a signal is raised.
Who should use it
- Developers who need to raise a readiness signal or wait for one, for example to delay work until the scene or data layer is ready.
- Developers adding new shared signals to the catalog.
SignalSystem does not deliver signals itself. It depends on the BusSystem, which contains SignalBus, BusUtility, and the base message bus classes that route signals and queue messages. Bus access goes through the ApplicationSystem's ServiceLocator. See the architecture and components documents for how these connect.