graph LR
Synchronous_Event_Dispatcher["Synchronous Event Dispatcher"]
Asynchronous_Event_Dispatcher["Asynchronous Event Dispatcher"]
Active_Receiver_Iterator["Active Receiver Iterator"]
Receiver_Cleanup_Handler["Receiver Cleanup Handler"]
Synchronous_Event_Dispatcher -- "calls" --> Active_Receiver_Iterator
Asynchronous_Event_Dispatcher -- "calls" --> Active_Receiver_Iterator
Active_Receiver_Iterator -- "calls" --> Receiver_Cleanup_Handler
The Event Dispatcher subsystem is responsible for the core mechanism of triggering and managing the execution of all receivers connected to a specific signal when that signal is "sent." Its boundaries are primarily defined by the send and send_async methods of the Signal class, which serve as the entry points for initiating the dispatch process.
The primary component responsible for synchronously triggering the execution of all receivers connected to a Signal instance. It iterates through the active receivers and invokes them sequentially.
Related Classes/Methods:
The component responsible for asynchronously triggering the execution of all receivers connected to a Signal instance. It iterates through the active receivers and invokes them using an asynchronous mechanism, allowing for non-blocking operations.
Related Classes/Methods:
A utility component that provides an iterable of currently active and valid receivers for a given signal. It handles the complexities of weak references and ensures that only callable receivers are returned for dispatch, filtering out expired or invalid ones.
Related Classes/Methods:
An internal component responsible for cleaning up references to receivers, particularly weak references that are no longer valid or have been explicitly disconnected. This ensures that the signal's receiver list remains clean and efficient.
Related Classes/Methods: