fsm 0.4.1
Header-only C++20 hierarchical table-driven FSM
Loading...
Searching...
No Matches
fsm::observer< State, Event, Reason > Struct Template Reference

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
 

Detailed Description

template<class State, class Event, class Reason>
struct fsm::observer< State, Event, Reason >

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).

Member Data Documentation

◆ on_event

template<class State , class Event , class Reason >
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.

◆ on_timeout_fired

template<class State , class Event , class Reason >
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.

◆ on_transition

template<class State , class Event , class Reason >
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.

◆ user

template<class State , class Event , class Reason >
void* fsm::observer< State, Event, Reason >::user = nullptr

Opaque pointer passed back to every hook.


The documentation for this struct was generated from the following file: