|
fsm 0.4.1
Header-only C++20 hierarchical table-driven FSM
|
Runtime-attachable debug observer: plain nullable function pointers. More...
#include <fsm.hpp>
Public Attributes | |
| void * | user = nullptr |
| Opaque pointer passed back to every hook. | |
| void(* | on_event )(void *user, const result< State, Event, Reason > &r) = nullptr |
| void(* | on_transition )(void *user, State from, State to, Event e) = nullptr |
| void(* | on_timeout_fired )(void *user, State armed, Event e) = nullptr |
Runtime-attachable debug observer: plain nullable function pointers.
No vtable, C-friendly. Attach with machine::set_observer(); every hook may be nullptr. Compiled out entirely when FSM_ENABLE_OBSERVER is 0.
Hooks run under the machine's reentrancy guard: observers observe, they do not drive — a dispatch() from inside a hook is refused (refused_reentrant, returned to the hook but not re-notified).
| void(* fsm::observer< State, Event, Reason >::on_event) (void *user, const result< State, Event, Reason > &r) = nullptr |
Every dispatch verdict, including refusals and unhandled events.
| void(* fsm::observer< State, Event, Reason >::on_timeout_fired) (void *user, State armed, Event e) = nullptr |
service() fired the armed deadline of armed, about to dispatch e.
| void(* fsm::observer< State, Event, Reason >::on_transition) (void *user, State from, State to, Event e) = nullptr |
Successful external transitions only, after entry actions completed.
| void* fsm::observer< State, Event, Reason >::user = nullptr |
Opaque pointer passed back to every hook.