diff options
author | Rickard Green <rickard@erlang.org> | 2021-04-27 17:44:49 +0200 |
---|---|---|
committer | Rickard Green <rickard@erlang.org> | 2021-04-27 18:42:06 +0200 |
commit | 0e37e492aa527dcbebf3bbb805dc10ed072b4021 (patch) | |
tree | aa99574e4df8e237d89e528d5188b5ed0e8e6266 /lib/stdlib/src | |
parent | 0ab8930521a1404f26ea677eadd5694caf5e0d38 (diff) | |
download | erlang-0e37e492aa527dcbebf3bbb805dc10ed072b4021.tar.gz |
Prepare gen calls for extra data in tag also when using aliases
Diffstat (limited to 'lib/stdlib/src')
-rw-r--r-- | lib/stdlib/src/gen.erl | 7 | ||||
-rw-r--r-- | lib/stdlib/src/gen_event.erl | 8 | ||||
-rw-r--r-- | lib/stdlib/src/gen_fsm.erl | 8 | ||||
-rw-r--r-- | lib/stdlib/src/gen_server.erl | 8 | ||||
-rw-r--r-- | lib/stdlib/src/gen_statem.erl | 13 |
5 files changed, 13 insertions, 31 deletions
diff --git a/lib/stdlib/src/gen.erl b/lib/stdlib/src/gen.erl index 68bbbb3365..6a07eb34d8 100644 --- a/lib/stdlib/src/gen.erl +++ b/lib/stdlib/src/gen.erl @@ -335,9 +335,12 @@ check_response(Msg, Mref) when is_reference(Mref) -> %% %% Send a reply to the client. %% +reply({_To, [alias|Alias] = Tag}, Reply) when is_reference(Alias) -> + Alias ! {Tag, Reply}, ok; +reply({_To, [[alias|Alias] | _] = Tag}, Reply) when is_reference(Alias) -> + Alias ! {Tag, Reply}, ok; reply({To, Tag}, Reply) -> - Msg = {Tag, Reply}, - try To ! Msg catch _:_ -> Msg end. + try To ! {Tag, Reply}, ok catch _:_ -> ok end. %%----------------------------------------------------------------- %% Syncronously stop a generic process diff --git a/lib/stdlib/src/gen_event.erl b/lib/stdlib/src/gen_event.erl index 0d069119c9..b4927b92bd 100644 --- a/lib/stdlib/src/gen_event.erl +++ b/lib/stdlib/src/gen_event.erl @@ -404,12 +404,8 @@ terminate_server(Reason, Parent, MSL, ServerName) -> do_unlink(Parent, MSL), exit(Reason). -reply({To, [alias|Alias] = Tag}, Reply) when is_pid(To), is_reference(Alias) -> - Alias ! {Tag, Reply}, - ok; -reply({From, Ref}, Msg) -> - From ! {Ref, Msg}, - ok. +reply(From, Reply) -> + gen:reply(From, Reply). %% unlink the supervisor process of all supervised handlers. %% We do not want a handler supervisor to EXIT due to the diff --git a/lib/stdlib/src/gen_fsm.erl b/lib/stdlib/src/gen_fsm.erl index 9ff58584eb..afd9fe8e16 100644 --- a/lib/stdlib/src/gen_fsm.erl +++ b/lib/stdlib/src/gen_fsm.erl @@ -564,12 +564,8 @@ from({'$gen_sync_all_state_event', From, _Event}) -> From; from(_) -> undefined. %% Send a reply to the client. -reply({To, [alias|Alias] = Tag}, Reply) when is_pid(To), is_reference(Alias) -> - Alias ! {Tag, Reply}, - ok; -reply({To, Tag}, Reply) -> - catch To ! {Tag, Reply}, - ok. +reply(From, Reply) -> + gen:reply(From, Reply). reply(Name, From, Reply, Debug, StateName) -> reply(From, Reply), diff --git a/lib/stdlib/src/gen_server.erl b/lib/stdlib/src/gen_server.erl index f59456d61a..9da3c59ff9 100644 --- a/lib/stdlib/src/gen_server.erl +++ b/lib/stdlib/src/gen_server.erl @@ -296,12 +296,8 @@ cast_msg(Request) -> {'$gen_cast',Request}. %% ----------------------------------------------------------------- %% Send a reply to the client. %% ----------------------------------------------------------------- -reply({To, [alias|Alias] = Tag}, Reply) when is_pid(To), is_reference(Alias) -> - Alias ! {Tag, Reply}, - ok; -reply({To, Tag}, Reply) -> - catch To ! {Tag, Reply}, - ok. +reply(From, Reply) -> + gen:reply(From, Reply). %% ----------------------------------------------------------------- %% Asynchronous broadcast, returns nothing, it's just send 'n' pray diff --git a/lib/stdlib/src/gen_statem.erl b/lib/stdlib/src/gen_statem.erl index 69ac6361ae..e91a24fd53 100644 --- a/lib/stdlib/src/gen_statem.erl +++ b/lib/stdlib/src/gen_statem.erl @@ -629,17 +629,8 @@ reply(Replies) when is_list(Replies) -> %% -compile({inline, [reply/2]}). -spec reply(From :: from(), Reply :: term()) -> ok. -reply({To, [alias|Alias] = Tag}, Reply) when is_pid(To), is_reference(Alias) -> - Alias ! {Tag, Reply}, - ok; -reply({To,Tag}, Reply) when is_pid(To) -> - Msg = {Tag,Reply}, - try To ! Msg of - _ -> - ok - catch - _:_ -> ok - end. +reply(From, Reply) -> + gen:reply(From, Reply). %% Instead of starting the state machine through start/3,4 %% or start_link/3,4 turn the current process presumably |