diff options
author | Raimo Niskanen <[email protected]> | 2018-01-24 11:27:20 +0100 |
---|---|---|
committer | Raimo Niskanen <[email protected]> | 2018-01-24 11:27:20 +0100 |
commit | 8e66754dac8963a6631c850b1eb63b27408259a2 (patch) | |
tree | 1ae2e0538dc619a1a6134ecc9ba3422eb49de7ed /lib/stdlib/test/stdlib_bench_SUITE_data/generic_fsm.erl | |
parent | 716ef17d2a00c7f4a5a5cf92fffd18adb94c542d (diff) | |
parent | 5a2f606671664a0bfa2aea810e49e0c3396e9b3d (diff) | |
download | otp-8e66754dac8963a6631c850b1eb63b27408259a2.tar.gz otp-8e66754dac8963a6631c850b1eb63b27408259a2.tar.bz2 otp-8e66754dac8963a6631c850b1eb63b27408259a2.zip |
Merge branch 'raimo/stdlib/gen-bench-fsm-vs-statem'
* raimo/stdlib/gen-bench-fsm-vs-statem:
Dodge divide by zero
Introduce gen_statem vs gen_fsm benchmark
Remove test suite warning
Diffstat (limited to 'lib/stdlib/test/stdlib_bench_SUITE_data/generic_fsm.erl')
-rw-r--r-- | lib/stdlib/test/stdlib_bench_SUITE_data/generic_fsm.erl | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/lib/stdlib/test/stdlib_bench_SUITE_data/generic_fsm.erl b/lib/stdlib/test/stdlib_bench_SUITE_data/generic_fsm.erl new file mode 100644 index 0000000000..50f7df7a2a --- /dev/null +++ b/lib/stdlib/test/stdlib_bench_SUITE_data/generic_fsm.erl @@ -0,0 +1,59 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2017-2018. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +-module(generic_fsm). + +-export([start/1, reply/2, transit/2, stop/1]). + +-export([init/1, terminate/3]). +-export([state1/3, state2/3]). + +-behaivour(gen_fsm). + + +%% API + +start(Data) -> + {ok, Pid} = gen_fsm:start(?MODULE, Data, []), + Pid. + +stop(P) -> + ok = gen_fsm:stop(P). + +reply(S, M) -> + gen_fsm:sync_send_event(S, {reply, M}, infinity). + +transit(S, M) -> + gen_fsm:sync_send_event(S, {transit, M}, infinity). + +%% Implementation + +init(Data) -> + {ok, state1, Data}. + +terminate(_Reason, _State, _Data) -> + ok. + +state1({reply, M}, _From, Data) -> + {reply, M, ?FUNCTION_NAME, Data}; +state1({transit, M}, _From, Data) -> + {reply, M, state2, Data}. + +state2({transit, M}, _From, Data) -> + {reply, M, state1, Data}. |