diff options
author | José Valim <[email protected]> | 2017-06-22 19:54:26 +0200 |
---|---|---|
committer | José Valim <[email protected]> | 2017-08-05 18:58:52 +0200 |
commit | 69e009e3e1ad899a4609ff327a08512c86dba374 (patch) | |
tree | c4a431d3c7c7f8b8e02de0fe1ceb8028c61b56df /lib/dialyzer | |
parent | f52748254f17ba42e344798e8c787a1e3361fa33 (diff) | |
download | otp-69e009e3e1ad899a4609ff327a08512c86dba374.tar.gz otp-69e009e3e1ad899a4609ff327a08512c86dba374.tar.bz2 otp-69e009e3e1ad899a4609ff327a08512c86dba374.zip |
Add {continue, Term} and handle_continue/2 to gen_server
If the gen_server process needs to perform an action immediately
after initialization or to break the execution of a callback into
multiple steps, it can return {continue, term()} in place of the
time-out or hibernation value, which will immediately invoke the
handle_continue/2 callback with the given term.
This provides a more accessible approach to after initialization
compared to proc_lib+enter_loop that is also guaranteed to be
safe.
It also allows callbacks that need to do lengthy or stateful work
to checkpoint the state throughout multiple iterations. This can
be useful, for example, when implementing behaviours on top of
gen_server.
Diffstat (limited to 'lib/dialyzer')
-rw-r--r-- | lib/dialyzer/test/behaviour_SUITE_data/results/gen_server_incorrect_args | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/dialyzer/test/behaviour_SUITE_data/results/gen_server_incorrect_args b/lib/dialyzer/test/behaviour_SUITE_data/results/gen_server_incorrect_args index 1eb8cd455b..1be0ce0d8c 100644 --- a/lib/dialyzer/test/behaviour_SUITE_data/results/gen_server_incorrect_args +++ b/lib/dialyzer/test/behaviour_SUITE_data/results/gen_server_incorrect_args @@ -1,5 +1,5 @@ gen_server_incorrect_args.erl:3: Undefined callback function handle_cast/2 (behaviour gen_server) gen_server_incorrect_args.erl:3: Undefined callback function init/1 (behaviour gen_server) -gen_server_incorrect_args.erl:7: The inferred return type of handle_call/3 ({'no'} | {'ok'}) has nothing in common with {'noreply',_} | {'noreply',_,'hibernate' | 'infinity' | non_neg_integer()} | {'reply',_,_} | {'stop',_,_} | {'reply',_,_,'hibernate' | 'infinity' | non_neg_integer()} | {'stop',_,_,_}, which is the expected return type for the callback of the gen_server behaviour +gen_server_incorrect_args.erl:7: The inferred return type of handle_call/3 ({'no'} | {'ok'}) has nothing in common with {'noreply',_} | {'noreply',_,'hibernate' | 'infinity' | non_neg_integer() | {'continue',_}} | {'reply',_,_} | {'stop',_,_} | {'reply',_,_,'hibernate' | 'infinity' | non_neg_integer() | {'continue',_}} | {'stop',_,_,_}, which is the expected return type for the callback of the gen_server behaviour gen_server_incorrect_args.erl:7: The inferred type for the 2nd argument of handle_call/3 ('boo' | 'foo') is not a supertype of {pid(),_}, which is expected type for this argument in the callback of the gen_server behaviour |