Event handling and propagation ============================== Components are responsible for subscribing to attribute events exposed by subsystem TANGO devices and translating them into a normalized form used within CSP.LMC. When an event is received from a subsystem device, the Component: - validates the event and its quality; - updates its internal cache of the last known attribute values; - forwards the event to the Event Manager for further processing. Components do not make decisions based on events. Instead, they act as event producers within the CSP.LMC monitoring architecture. Event Manager architecture -------------------------- The Event Manager has been designed as a modular event-processing pipeline. This design replaces the previous monolithic Event Manager with a modular, extensible architecture, improving separation of concerns, extensibility, and testability. The event handling flow is now composed of the following stages: - Event ingestion: the BaseEventManager receives events from Components and enqueues them for asynchronous processing. - Event processing: a worker thread dequeues events and passes them to the EventManager for handling. - Event dispatching: the CspEventRegistry routes events to attribute-specific handlers, if registered. Attribute registration is currently performed during Component Manager initialization. - Domain orchestration: the CspEventHandler (and its specializations) implements CSP domain logic such as state aggregation, health evaluation, and observation state updates. - Default propagation: if no specific handler is registered for an attribute, a default handler forwards the event to the device layer via a callback. This architecture decouples transport, routing, and business logic, allowing each concern to evolve independently. Invalid or erroneous events may occur during device restarts, reconnection, or communication failures. Such events are filtered and not propagated further if they carry invalid quality and no usable value. Future enhancements may expose these events to higher-level supervision logic to improve detection of connectivity loss and recovery phases.