Andrey Semashev | 6 Aug 16:59
Picon

Re: FSM Review Announcement

Chris Knight wrote:
> On Tuesday 05 August 2008 4:34:30 pm David Abrahams wrote:
> 
> The finite state machine I came up with for the FIX protocol was well over 50 
> transitions. I implemented ours so that the from state could be boost::any 
> which acts acts like '.' in regexps and I suppose means our implementation 
> should be renamed kmt::nfsm. It was a zero-cost implentation as it simply 
> adds one last transition to each from state's action linked-list.I was able 
> to get the transition list down to 22 with that one feature. Mostly all the 
> different error conditions that you want to handle gracefully in a text 
> protocol originally designed in the 1980's and still used by finance 
> exchanges today. <sigh>

The Boost.FSM library supports similar feature. You can use any_state 
placeholder in transitions in order to tell that the transition works 
for any source state.

> The other feature that I'm not sure whether FSM supports or not is static 
> registering of posted event types so as to skip around run-time double 
> dispatching. I suspect any implementation that seeks to provide a 
> simplified/speedier interface over StateChart should support that as well.

I'm not sure what you mean by that "registering". The library does one 
event dispatching if it is known at compile time that no entry in the 
transition map will be triggered. If a transition map entry is 
triggered, then two dispatches are done - one to deliver event to the 
transition handler, and second to deliver the event to the active state. 
In any case, dispatching is very efficient and is basically a call on a 
function pointer that is acquired from an array by index.
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Gmane