diff options
Diffstat (limited to 'lib/kernel/src/gen_tcp.erl')
-rw-r--r-- | lib/kernel/src/gen_tcp.erl | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/lib/kernel/src/gen_tcp.erl b/lib/kernel/src/gen_tcp.erl index f0204802e3..c69524daf6 100644 --- a/lib/kernel/src/gen_tcp.erl +++ b/lib/kernel/src/gen_tcp.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2020. All Rights Reserved. +%% Copyright Ericsson AB 1997-2021. 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. @@ -30,6 +30,9 @@ -include("inet_int.hrl"). -include("file.hrl"). +-define(module_socket(Handler, Handle), + {'$inet', (Handler), (Handle)}). + -type option() :: {active, true | false | once | -32768..32767} | {buffer, non_neg_integer()} | @@ -231,7 +234,7 @@ listen(Port, Opts0) -> Socket :: socket(), Reason :: closed | system_limit | inet:posix(). -accept({'$inet', GenTcpMod, _} = S) when is_atom(GenTcpMod) -> +accept(?module_socket(GenTcpMod, _) = S) when is_atom(GenTcpMod) -> GenTcpMod:?FUNCTION_NAME(S, infinity); accept(S) when is_port(S) -> case inet_db:lookup_socket(S) of @@ -247,7 +250,7 @@ accept(S) when is_port(S) -> Socket :: socket(), Reason :: closed | timeout | system_limit | inet:posix(). -accept({'$inet', GenTcpMod, _} = S, Time) when is_atom(GenTcpMod) -> +accept(?module_socket(GenTcpMod, _) = S, Time) when is_atom(GenTcpMod) -> GenTcpMod:?FUNCTION_NAME(S, Time); accept(S, Time) when is_port(S) -> case inet_db:lookup_socket(S) of @@ -266,7 +269,7 @@ accept(S, Time) when is_port(S) -> How :: read | write | read_write, Reason :: inet:posix(). -shutdown({'$inet', GenTcpMod, _} = S, How) when is_atom(GenTcpMod) -> +shutdown(?module_socket(GenTcpMod, _) = S, How) when is_atom(GenTcpMod) -> GenTcpMod:?FUNCTION_NAME(S, How); shutdown(S, How) when is_port(S) -> case inet_db:lookup_socket(S) of @@ -283,7 +286,7 @@ shutdown(S, How) when is_port(S) -> -spec close(Socket) -> ok when Socket :: socket(). -close({'$inet', GenTcpMod, _} = S) when is_atom(GenTcpMod) -> +close(?module_socket(GenTcpMod, _) = S) when is_atom(GenTcpMod) -> GenTcpMod:?FUNCTION_NAME(S); close(S) -> inet:tcp_close(S). @@ -298,7 +301,7 @@ close(S) -> Reason :: closed | {timeout, RestData} | inet:posix(), RestData :: binary(). -send({'$inet', GenTcpMod, _} = S, Packet) when is_atom(GenTcpMod) -> +send(?module_socket(GenTcpMod, _) = S, Packet) when is_atom(GenTcpMod) -> GenTcpMod:?FUNCTION_NAME(S, Packet); send(S, Packet) when is_port(S) -> case inet_db:lookup_socket(S) of @@ -319,7 +322,7 @@ send(S, Packet) when is_port(S) -> Reason :: closed | inet:posix(), HttpPacket :: term(). -recv({'$inet', GenTcpMod, _} = S, Length) when is_atom(GenTcpMod) -> +recv(?module_socket(GenTcpMod, _) = S, Length) when is_atom(GenTcpMod) -> GenTcpMod:?FUNCTION_NAME(S, Length, infinity); recv(S, Length) when is_port(S) -> case inet_db:lookup_socket(S) of @@ -337,7 +340,7 @@ recv(S, Length) when is_port(S) -> Reason :: closed | timeout | inet:posix(), HttpPacket :: term(). -recv({'$inet', GenTcpMod, _} = S, Length, Time) when is_atom(GenTcpMod) -> +recv(?module_socket(GenTcpMod, _) = S, Length, Time) when is_atom(GenTcpMod) -> GenTcpMod:?FUNCTION_NAME(S, Length, Time); recv(S, Length, Time) when is_port(S) -> case inet_db:lookup_socket(S) of @@ -347,7 +350,7 @@ recv(S, Length, Time) when is_port(S) -> Error end. -unrecv({'$inet', GenTcpMod, _} = S, Data) when is_atom(GenTcpMod) -> +unrecv(?module_socket(GenTcpMod, _) = S, Data) when is_atom(GenTcpMod) -> GenTcpMod:?FUNCTION_NAME(S, Data); unrecv(S, Data) when is_port(S) -> case inet_db:lookup_socket(S) of @@ -366,7 +369,7 @@ unrecv(S, Data) when is_port(S) -> Pid :: pid(), Reason :: closed | not_owner | badarg | inet:posix(). -controlling_process({'$inet', GenTcpMod, _} = S, NewOwner) +controlling_process(?module_socket(GenTcpMod, _) = S, NewOwner) when is_atom(GenTcpMod) -> GenTcpMod:?FUNCTION_NAME(S, NewOwner); controlling_process(S, NewOwner) -> |