所有的状态事件

所有的状态事件

有时候,在gen_fsm的任何状态都有可能有事件到达。除了可以用 gen_fsm:send_event/2 发送消息,并为每一个状态函数写一个子句来处理事件之外,还可以通过 gen_fsm:send_all_state_event/2 来发送消息,并用 Module:handle_event/3 来处理。

-module(code_lock).
...
-export([stop/0]).
...

stop() ->
    gen_fsm:send_all_state_event(code_lock, stop).

...

handle_event(stop, _StateName, StateData) ->
    {stop, normal, StateData}.