-module(test). -behaviour(gen_fsm). % export the callbacks common to gen_fsm behaviours -export([start/0, init/1, handle_info/3, terminate/3]). % export the callbacks for (gen_fsm behaviour) states in this module -export([state1/2, state2/2]). start() -> gen_fsm:start_link({local, testing}, test, [], [{debug, [log]}]). init(_) -> {ok, state1, []}. state1(2, StateData) -> {next_state, state2, StateData}. state2(1, StateData) -> {next_state, state1, StateData}. handle_info({'EXIT', Pid, Reason}, State, StateData) -> {stop, Reason, StateData}. terminate(Reason, State, StateData) -> io_lib:format("shutting down: ~w", [Reason]).