|
Boost Users : |
Subject: Re: [Boost-users] MSM <-> UML Conversion
From: Christophe Henry (christophe.j.henry_at_[hidden])
Date: 2011-10-21 02:45:07
>Hi,
>I haven't yet looked at MSM. However, I do wonder if the activity/state diagrams
>generated from MSM based code would be convertible to equivalent sequence
>diagrams. In other words, I want to know if MSM does indeed create object instance
>and whether it creates those instances on heap, etc. In short, I am interested in the
>performance aspect. I have a scenario where I have two state machines - basically,
>protocols for the trading domain - and I am supposed to map one protocol to another
>and vice versa - that is, develop a message broker. I am thinking about designing a
>generic solution that could be used to map any protocol (all messages along with
>their behavior) to any protocol based on the grammar - the message strings, their
>sequences, etc. Can I use MSM for this kind of a problem? I did write something
>like this for a client a long time back but it would take me quite some time if I jump
>into doing that again. That does make think if Boost MSM (or StateChart?) offers a
>faster solution.
>
>Thanks in advance,
>-Asif
Hi,
MSM creates all states on the stack for better performance. Actually, msm does not know the word "new" ;-)
The only things which can use the heap are the queues (which you can customize / disable).
What Joel wrote is also correct: all states are created on the stack upon fsm construction and stay around until destruction, the state machine is copyable (and even serializable/deserializable, which might help if you want to send them as a string along the message).
I'm not sure I fully understand your problem but as a small note, state machines and sequence diagrams are not equivalent (sequence diagrams do not have the "specification" capability).
What you also need to know is that with msm, a state machine structure has to be known at compile-time, you cannot design it at run-time depending on a concrete message data. Something like "if(...) fsm.add_transition(...))" is not possible.
HTH,
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