diff options
author | Henrik Nord <[email protected]> | 2011-10-07 17:17:27 +0200 |
---|---|---|
committer | Henrik Nord <[email protected]> | 2011-10-07 17:17:32 +0200 |
commit | a5abe96590ec22779f796fc67e5afbbf99a3a922 (patch) | |
tree | b22eb07f52606bc7ab5c7339026d007784aef0a4 /lib/stdlib/src/gen_fsm.erl | |
parent | 00202339445daae6ed931f28f932089d5c3dd455 (diff) | |
parent | ed72d05e27fcf1d4f649014ffd7a1c2878b5b010 (diff) | |
download | otp-a5abe96590ec22779f796fc67e5afbbf99a3a922.tar.gz otp-a5abe96590ec22779f796fc67e5afbbf99a3a922.tar.bz2 otp-a5abe96590ec22779f796fc67e5afbbf99a3a922.zip |
Merge branch 'sa/callback-attr'
* sa/callback-attr:
Add callback specs into 'application' module in kernel
Add callback specs to tftp module following internet documentation
Add callback specs to inets_service module following possibly deprecated comments
Add '-callback' attributes in stdlib's behaviours
Update primary bootstrap
Update the documentation with information on the callback attribute
Automatically generate 'behaviour_info' function from '-callback' attributes
Add '-callback' attribute to language syntax
OTP-9621
Diffstat (limited to 'lib/stdlib/src/gen_fsm.erl')
-rw-r--r-- | lib/stdlib/src/gen_fsm.erl | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/lib/stdlib/src/gen_fsm.erl b/lib/stdlib/src/gen_fsm.erl index ea21136bdb..3db8c9f4f2 100644 --- a/lib/stdlib/src/gen_fsm.erl +++ b/lib/stdlib/src/gen_fsm.erl @@ -113,8 +113,6 @@ start_timer/2,send_event_after/2,cancel_timer/1, enter_loop/4, enter_loop/5, enter_loop/6, wake_hib/6]). --export([behaviour_info/1]). - %% Internal exports -export([init_it/6, system_continue/3, @@ -128,13 +126,38 @@ %%% Interface functions. %%% --------------------------------------------------- --spec behaviour_info(atom()) -> 'undefined' | [{atom(), arity()}]. - -behaviour_info(callbacks) -> - [{init,1},{handle_event,3},{handle_sync_event,4},{handle_info,3}, - {terminate,3},{code_change,4}]; -behaviour_info(_Other) -> - undefined. +-callback init(Args :: term()) -> + {ok, StateName :: atom(), StateData :: term()} | + {ok, StateName :: atom(), StateData :: term(), timeout() | hibernate} | + {stop, Reason :: term()} | ignore. +-callback handle_event(Event :: term(), StateName :: atom(), + StateData :: term()) -> + {next_state, NextStateName :: atom(), NewStateData :: term()} | + {next_state, NextStateName :: atom(), NewStateData :: term(), + timeout() | hibernate} | + {stop, Reason :: term(), NewStateData :: term()}. +-callback handle_sync_event(Event :: term(), From :: {pid(), Tag :: term()}, + StateName :: atom(), StateData :: term()) -> + {reply, Reply :: term(), NextStateName :: atom(), NewStateData :: term()} | + {reply, Reply :: term(), NextStateName :: atom(), NewStateData :: term(), + timeout() | hibernate} | + {next_state, NextStateName :: atom(), NewStateData :: term()} | + {next_state, NextStateName :: atom(), NewStateData :: term(), + timeout() | hibernate} | + {stop, Reason :: term(), Reply :: term(), NewStateData :: term()} | + {stop, Reason :: term(), NewStateData :: term()}. +-callback handle_info(Info :: term(), StateName :: atom(), + StateData :: term()) -> + {next_state, NextStateName :: atom(), NewStateData :: term()} | + {next_state, NextStateName :: atom(), NewStateData :: term(), + timeout() | hibernate} | + {stop, Reason :: normal | term(), NewStateData :: term()}. +-callback terminate(Reason :: normal | shutdown | {shutdown, term()} + | term(), StateName :: atom(), StateData :: term()) -> + term(). +-callback code_change(OldVsn :: term() | {down, term()}, StateName :: atom(), + StateData :: term(), Extra :: term()) -> + {ok, NextStateName :: atom(), NewStateData :: term()}. %%% --------------------------------------------------- %%% Starts a generic state machine. |