2012-06-13 1 views
0

Когда мы вызываем fsm.process_event ('eventname');boost msm library newbi при стрельбе

Есть ли способ вернуть true, если произошел переход, и false, если было вызвано «no_transition» или произошло исключение?

Благодаря

ответ

0

Видеть, как никто не ответил до сих пор я выложу свой весьма скромное предложение. Вы можете попробовать вызвать метод current_state() до и после вызова fsm.process_event() и сравнить результаты. Это, однако, не будет охватывать случай самопереходов или внутренних переходов, и я не буду использовать его, если есть другие альтернативы (в лучшем случае это взломать).

Если вы пытаетесь поймать случай, когда какое-либо событие не обрабатывается каким-либо состоянием и просто распространяется через вас, вы можете добавить еще одну сверхсогласованную нижнюю часть, которая сообщает о событиях, которые ее достигают (т.е. игнорируются всеми состояниями, через которые они распространяются) ,

У меня были ситуации, когда мне нужно было знать, действительно ли какое-то событие что-то делало и когда оно это делало (возможно, сначала было отложено, а затем выполнено). В этом случае я отправил сообщения MSK «ACK» во внешнюю очередь, я не уверен, относится ли это к вашей проблеме.

В моем скромном знании прерывания и государственные машины не смешиваются очень хорошо, я обычно либо просто глотаю их, либо пытаюсь превратить их в какое-то событие в зависимости от контекста. Вы никогда не должны позволять вам сателлиты (базовые объекты функций) бросать.