summaryrefslogtreecommitdiff
path: root/priv/templates/otp_fsm.erl
diff options
context:
space:
mode:
Diffstat (limited to 'priv/templates/otp_fsm.erl')
-rw-r--r--priv/templates/otp_fsm.erl79
1 files changed, 79 insertions, 0 deletions
diff --git a/priv/templates/otp_fsm.erl b/priv/templates/otp_fsm.erl
new file mode 100644
index 0000000..0f1eafb
--- /dev/null
+++ b/priv/templates/otp_fsm.erl
@@ -0,0 +1,79 @@
+%%%-------------------------------------------------------------------
+%% @copyright {{copyright_holder}} ({{copyright_year}})
+%% @author {{author_name}} <{{author_email}}>
+%% @doc {{appid}} {{fsmid}} OTP FSM.
+%% @end
+%%%-------------------------------------------------------------------
+
+-module({{appid}}_{{fsmid}}_fsm).
+
+-behaviour(gen_fsm).
+
+-include("{{appid}}_log.hrl").
+
+%% API
+-export([start_link/0
+ ]).
+
+%% gen_fsm callbacks
+-export([init/1, handle_event/3, handle_sync_event/4, handle_info/3,
+ terminate/3, code_change/4]).
+
+-export([disconnected/2
+ ,disconnected/3
+ ]).
+
+-record(state, {replaceme}).
+
+%%====================================================================
+%% API
+%%====================================================================
+start_link() ->
+ gen_fsm:start_link(?MODULE, [], []).
+
+%%====================================================================
+%% gen_fsm callbacks
+%%====================================================================
+
+%% gen_fsm init/1 callback
+%% @private
+init([]) ->
+ {ok, disconnected, #state{}}.
+
+%% state event handler functions.
+%% @private
+disconnected(Event, State) ->
+ ?WARN("[state: disconnected] Unhandled event: ~p", [Event]),
+ {next_state, disconnected, State}.
+
+disconnected(Event, _From, State) ->
+ ?WARN("[state: disconnected] Unhandled event: ~p", [Event]),
+ {next_state, disconnected, State}.
+
+%% gen_fsm callbacks
+%% @private
+handle_event(Event, StateName, State) ->
+ ?WARN("[state: ~p] Unhandled event: ~p", [StateName, Event]),
+ {next_state, StateName, State}.
+
+%% @private
+handle_sync_event(Event, _From, StateName, State) ->
+ ?WARN("[state: ~p] Unhandled event: ~p", [StateName, Event]),
+ {next_state, StateName, State}.
+
+%% @private
+handle_info(Info, StateName, State) ->
+ ?INFO("[state: ~p] Unexpected msg: ~p", [StateName, Info]),
+ {next_state, StateName, State}.
+
+%% @private
+terminate(_Reason, _StateName, _State) ->
+ ok.
+
+%% @private
+code_change(_OldVsn, StateName, State, _Extra) ->
+ {ok, StateName, State}.
+
+%%====================================================================
+%% Internal functions
+%%====================================================================