Boost logo

Boost Users :

Subject: [Boost-users] [msm] is that correct behavior?
From: Sam Fisher (infest21h_at_[hidden])
Date: 2015-06-23 12:24:16


Hi Christophe,

For an fsm with orthogonal regions if any region rejects an event (guard
returns false), the library blocks all anonymous transitions.

for example, an fsm has two regions.
Region 0 returns HANDLED_TRUE, region 1 returns HANDLED_GUARD_REJECT for
the same event.
region_processing_helper combines it into a single "HANDLED_TRUE |
HANDLED_GUARD_REJECT" value.

However function process_event_internal<> (state_machine.hpp) creates
handle_eventless_transitions_helper that takes (handled == HANDLED_TRUE)
as a condition for allowing transitions.

should it be (handled & HANDLED_TRUE)?

as a result, fsm is stuck in event that has an anonymous transition to
another event.

PS. I've seen the same condition (handled == HANDLED_TRUE) in
do_post_handle_deferred function, but I do not use deferred events so I
did not check that part.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net