Interactive visual reference for event routing and execution flows
A Sugarcoat application runs across two kinds of processes: the main process (hosting the Launcher and Monitor node) and one or more component processes. Select a flow below to highlight which parts of the architecture are involved.
OnInternalEvent handlersInternalEvent back to Launcher context/event_bridge/...)@component_action methodsSelect a flow to see the step-by-step execution path and highlight the involved architecture components above.
The Monitor subscribes to the event topic, evaluates the condition on each incoming message,
and directly executes system-level actions (e.g. publish_message).
The event is routed directly to the component. The component subscribes to the topic itself,
evaluates the condition, and executes the @component_action method.
The Monitor subscribes to the event topic and evaluates the condition. On trigger, it emits an
InternalEvent to the ROS2 launch context. The Launcher's OnInternalEvent
handler matches it and executes the inline recipe method or ROS launch action.
The Monitor polls the user-supplied callable at check_rate Hz via a timer.
When it returns True, the registered system-level action is executed directly.
The callable lives in the recipe (main process) but the action must run inside the component (separate process).
A bridge topic (/event_bridge/e_{id}_{component}) carries a Bool
message across the process boundary.
The Monitor polls the callable. On trigger, it emits an InternalEvent to the launch context,
where the Launcher executes the inline recipe method or ROS launch action.
The Launcher inspects each action and routes it based on ownership. Hover over destination boxes to see the responsible source file and method.
Both the Monitor and each Component maintain their own event blackboard. Click on a blackboard entry to see how it is handled during evaluation.
Dict[str, EventBlackboardEntry] — one entry per subscribed topic
__event_topic_callback(topic, msg) updates the blackboard entry with a fresh timestamp and new UUID.
__events_per_topic[topic_name] returns all events that reference this topic.
event.check_condition(subset) — applies on_change rising edge,
handle_once guard, and keep_event_delay throttle.
ThreadPoolExecutor (10 workers).
The ROS callback thread is never blocked.
How event/action data moves through the system from user configuration to runtime execution.