在发射事件中提升msm库newbi

时间:2012-06-13 02:42:06

标签: boost state-machine

当我们调用fsm.process_event('eventname');

如果发生转换,有没有办法返回true;如果调用“no_transition”或发生异常,有没有办法返回错误?

由于

1 个答案:

答案 0 :(得分:0)

到目前为止看到没有人回答我会发表我非常谦虚的建议。您可以在调用fsm.process_event()之前和之后尝试调用current_state()方法并比较结果。然而,这不会涵盖自我转换或内部转换的情况,如果有其他替代方案(它最好是黑客),我不会使用它。

如果你试图捕捉一个事件没有被任何状态处理的情况,只是传播通过你可以再添加一个底层超级状态,它报告到达它的事件(即被它们传播的所有状态都被忽略)。

我遇到过一些情况,我需要知道某个事件是否真的做了什么以及何时做了(可能是先推迟然后再执行)。在那种情况下,我将我的MSM帖子“ACK”消息发送到外部队列,我不确定这是否适用于您的问题。

在我的谦虚知识中,中断和状态机不能很好地混合,我通常要么只是吞下它们,要么根据上下文尝试将它们变成某种事件。你永远不应该让你的状态(基础函数对象)抛出。