Boost logo

Boost Users :

Subject: Re: [Boost-users] [msm] is that correct behavior?
From: christophe.j.henry_at_[hidden]
Date: 2015-06-29 17:02:47


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

Hi,

you're right, it clearly is a bug.
I took some time to think if your solution is correct and I think it is, so
I committed it into the develop branch.

Thanks for the report and fix,
Christophe


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