Big state machines
Ulf Wiger
ulf@REDACTED
Sat Apr 23 11:16:21 CEST 2005
Den 2005-04-23 08:50:47 skrev Ulf Wiger <ulf@REDACTED>:
> Or was it perhaps because I hadn't
> documented the option of skipping the parse transform and
> writing more or less the way you did?
Hmm, re-reading the plain_fsm documentation, I see that
this wasn't entirely correct:
"In the states where you want to handle system messages, you
have two choices:
(A) Insert the system messages in the receive clause:
idle(S) ->
Parent = plain_fsm:info(parent),
receive
{system, From, Req} ->
plain_fsm:handle_system_msg(
From, Req, S, fun(S1) -> idle(S1) end);
{'EXIT', Parent, Reason} ->
plain_fsm:parent_EXIT(Reason, S);
... %% your original code here
end.
This has the advantage that everyone can understand what's going on.
The part that plain_fsm.erl helps you with is the set of functions
system_code_change(), system_continue(), system_shutdown(),
format_status(), which are required callbacks when you handle
system messages directly."
(from http://www.wiger.net/uffe/erlang/plain_fsm0.4/doc/index.html)
It seems as if the ?SYSTEM and ?EXIT macros should be possible
to build on top of this framework as well.
/Uffe
More information about the erlang-questions
mailing list