我有一个gen_fsm实现,它有很多状态和很多代码(超过2000行代码)。任何想法如何使gen_fsm模块化,也许像插件系统?但我希望fsm能够在位于不同插件中的状态之间跳转。
答案 0 :(得分:1)
你可以创建erlang模块。我正在查看this gen_fsm skeleton,您可以将任何函数换成它自己的模块。
例如假设你有一个像
这样的事件处理程序 handle_event(wakeup, StateName, State) ->
%% rest of the body
你可以创建一个新模块并在那里移动handle事件的定义
-module(wakeup_event).
-export(wakeup/3).
wakeup(_wakeup,Statename, State)-> %%do something here
{nextstate, Statename,State}.
并从handle_event中调用它,如此
handle_event(wakeup,Statename,State)->
wakeup_event:wakeup(wakeup,Statename,State);