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_statem.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_statem.erl')
-rw-r--r-- | lib/stdlib/test/stdlib_bench_SUITE_data/generic_statem.erl | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/lib/stdlib/test/stdlib_bench_SUITE_data/generic_statem.erl b/lib/stdlib/test/stdlib_bench_SUITE_data/generic_statem.erl new file mode 100644 index 0000000000..2e0491f060 --- /dev/null +++ b/lib/stdlib/test/stdlib_bench_SUITE_data/generic_statem.erl @@ -0,0 +1,58 @@ +%% +%% %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_statem). + +-export([start/1, reply/2, transit/2, stop/1]). + +-export([callback_mode/0, init/1]). +-export([state1/3, state2/3]). + +-behaviour(gen_statem). + +%% API + +start(Data) -> + {ok, Pid} = gen_statem:start(?MODULE, Data, []), + Pid. + +stop(P) -> + ok = gen_statem:stop(P). + +reply(S, M) -> + gen_statem:call(S, {reply, M}, infinity). + +transit(S, M) -> + gen_statem:call(S, {transit, M}, infinity). + +%% Implementation + +callback_mode() -> + state_functions. + +init(Data) -> + {ok, state1, Data}. + +state1({call, From}, {reply, M}, Data) -> + {keep_state, Data, {reply, From, M}}; +state1({call, From}, {transit, M}, Data) -> + {next_state, state2, Data, {reply, From, M}}. + +state2({call, From}, {transit, M}, Data) -> + {next_state, state1, Data, {reply, From, M}}. |