diff options
author | Siri Hansen <[email protected]> | 2014-03-25 09:46:49 +0100 |
---|---|---|
committer | Siri Hansen <[email protected]> | 2014-03-25 09:47:19 +0100 |
commit | aa2dfd7c30d3ca3318498bcbf4155dad175b6d7e (patch) | |
tree | 3b7d38226fe79cc2b19162313e0eac8a44b697f0 /lib/stdlib/src/gen_fsm.erl | |
parent | 1eee4ded1b435d3728fc75ad384626c80025bb3b (diff) | |
parent | cbcac6f0d55907dda2e0c385eba44eac2e7923d2 (diff) | |
download | otp-aa2dfd7c30d3ca3318498bcbf4155dad175b6d7e.tar.gz otp-aa2dfd7c30d3ca3318498bcbf4155dad175b6d7e.tar.bz2 otp-aa2dfd7c30d3ca3318498bcbf4155dad175b6d7e.zip |
Merge branch 'vinoski/sys-get-rep-state2'
* vinoski/sys-get-rep-state2:
remove tuple funs from special process documentation
fix sys:get_state/1,2 and sys:replace_state/2,3 when sys suspended
OTP-11817
Diffstat (limited to 'lib/stdlib/src/gen_fsm.erl')
-rw-r--r-- | lib/stdlib/src/gen_fsm.erl | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/lib/stdlib/src/gen_fsm.erl b/lib/stdlib/src/gen_fsm.erl index e9654322f1..e914f7d0b2 100644 --- a/lib/stdlib/src/gen_fsm.erl +++ b/lib/stdlib/src/gen_fsm.erl @@ -118,6 +118,8 @@ system_continue/3, system_terminate/4, system_code_change/4, + system_get_state/1, + system_replace_state/2, format_status/2]). -import(error_logger, [format/2]). @@ -422,17 +424,6 @@ wake_hib(Parent, Name, StateName, StateData, Mod, Debug) -> decode_msg(Msg,Parent, Name, StateName, StateData, Mod, Time, Debug, Hib) -> case Msg of - {system, From, get_state} -> - Misc = [Name, StateName, StateData, Mod, Time], - sys:handle_system_msg(get_state, From, Parent, ?MODULE, Debug, - {{StateName, StateData}, Misc}, Hib); - {system, From, {replace_state, StateFun}} -> - State = {StateName, StateData}, - NState = {NStateName, NStateData} = try StateFun(State) - catch _:_ -> State end, - NMisc = [Name, NStateName, NStateData, Mod, Time], - sys:handle_system_msg(replace_state, From, Parent, ?MODULE, Debug, - {NState, NMisc}, Hib); {system, From, Req} -> sys:handle_system_msg(Req, From, Parent, ?MODULE, Debug, [Name, StateName, StateData, Mod, Time], Hib); @@ -467,6 +458,13 @@ system_code_change([Name, StateName, StateData, Mod, Time], Else -> Else end. +system_get_state([_Name, StateName, StateData, _Mod, _Time]) -> + {ok, {StateName, StateData}}. + +system_replace_state(StateFun, [Name, StateName, StateData, Mod, Time]) -> + Result = {NStateName, NStateData} = StateFun({StateName, StateData}), + {ok, Result, [Name, NStateName, NStateData, Mod, Time]}. + %%----------------------------------------------------------------- %% Format debug messages. Print them as the call-back module sees %% them, not as the real erlang messages. Use trace for that. |