docs
Systems
Messaging
SignalSystem
SignalSystem Overview

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: SaffronLibrarySignals exposes the shared signal keys that multiple systems use (SceneReady, SystemsReady, DataSystemReady).
  • Consistent naming: SignalKeyNames builds each signal's string name from a shared base and segments, so names stay consistent and unique.
  • Signal identity and message: SignalKey identifies a signal by its name, and Signal is 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.