
Sorry for the *very* late reply... Quoting [Michael Richardson] (Apr 20 2009):
"Andre" == Andre Merzky <andre@merzky.net> writes: Andre> For example, assume that I have a client which implements the Andre> core specification only, thus only knows the STOPPED, ACTIVE Andre> and SUSPENDED states (your original figure). What is that Andre> client supposed to do if the backend reports an PAUSED state?
How did it get to that state?
Since the client didn't put it into that state, it means that an operator or error must have forced this, so it's an error. Life does not always go as planned.
It is dangerous to assume that the client is the only legimitate entity which operates on the machine state diagram. The system admin, internal events, other clients, etc, may all have reason to trigger state changes, and this would not represent errors.
If the client does not do PAUSED state, the system shouldn't get into that state.
see above.
The client, upon seeing a state that it does not understand could attempt to recover by requesting a transition to primary state that it does understand.
If the client does not know the state, it cannot determine what a valid state transition would be.
Andre> BTW, I agree with Krishna's point that ENTRY and EXIT points Andre> are useful.
Where are they attached?
ENTRY point is attached to all states which can be reached initially, i.e. on creation. EXIT point is attached to all states which cannot be left, i.e. no transition exists to leave that state. Best, Andre. -- Nothing is ever easy.