From cd0f46d1f286b28d1289c2be4218c83b980f241d Mon Sep 17 00:00:00 2001 From: Micael Karlberg Date: Fri, 10 May 2019 14:26:41 +0200 Subject: [esock] Add command (nif) function Add a command function to the socket API. Currently only used for changing global debug. OTP-15817 --- erts/preloaded/ebin/socket.beam | Bin 75044 -> 75444 bytes erts/preloaded/src/socket.erl | 32 ++++++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) (limited to 'erts/preloaded') diff --git a/erts/preloaded/ebin/socket.beam b/erts/preloaded/ebin/socket.beam index 134b4eac13..d19e0c40b4 100644 Binary files a/erts/preloaded/ebin/socket.beam and b/erts/preloaded/ebin/socket.beam differ diff --git a/erts/preloaded/src/socket.erl b/erts/preloaded/src/socket.erl index ae1ffdb4ac..3a43504f8f 100644 --- a/erts/preloaded/src/socket.erl +++ b/erts/preloaded/src/socket.erl @@ -26,9 +26,12 @@ %% Administrative and "global" utility functions -export([ on_load/0, on_load/1, + + ensure_sockaddr/1, + + command/1, info/0, - supports/0, supports/1, supports/2, supports/3, - ensure_sockaddr/1 + supports/0, supports/1, supports/2, supports/3 ]). -export([ @@ -63,6 +66,8 @@ select_ref/0, select_info/0, + command/0, + domain/0, type/0, protocol/0, @@ -135,6 +140,18 @@ ]). +%% The command type has the general form: +%% #{ +%% command := atom(), +%% data := term() +%% } +%% But only certain values are actually valid, so the type gets the form: +-type debug_command() :: #{ + command := debug, + data := boolean() + }. +-type command() :: debug_command(). + -type uint8() :: 0..16#FF. -type uint16() :: 0..16#FFFF. -type uint20() :: 0..16#FFFFF. @@ -867,6 +884,14 @@ info() -> nif_info(). +-spec command(Command) -> term() when + Command :: command(). + +command(#{command := debug, + data := Dbg} = Command) when is_boolean(Dbg) -> + nif_command(Command). + + %% =========================================================================== %% @@ -3845,6 +3870,9 @@ error(Reason) -> nif_info() -> erlang:nif_error(undef). +nif_command(_Command) -> + erlang:nif_error(undef). + nif_supports(_Key) -> erlang:nif_error(undef). -- cgit v1.2.1 From b7b650e20da47861f3d2e5ac32f720056391bf43 Mon Sep 17 00:00:00 2001 From: Micael Karlberg Date: Fri, 10 May 2019 15:18:55 +0200 Subject: [esock] Add debug function Introduced a debug/1 function and made the command/1 internal. OTP-15817 --- erts/preloaded/ebin/socket.beam | Bin 75444 -> 75584 bytes erts/preloaded/src/socket.erl | 19 ++++++++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) (limited to 'erts/preloaded') diff --git a/erts/preloaded/ebin/socket.beam b/erts/preloaded/ebin/socket.beam index d19e0c40b4..c4680c2baa 100644 Binary files a/erts/preloaded/ebin/socket.beam and b/erts/preloaded/ebin/socket.beam differ diff --git a/erts/preloaded/src/socket.erl b/erts/preloaded/src/socket.erl index 3a43504f8f..e9a76dc1e9 100644 --- a/erts/preloaded/src/socket.erl +++ b/erts/preloaded/src/socket.erl @@ -29,7 +29,8 @@ ensure_sockaddr/1, - command/1, + debug/1, + %% command/1, info/0, supports/0, supports/1, supports/2, supports/3 ]). @@ -66,7 +67,7 @@ select_ref/0, select_info/0, - command/0, + %% command/0, domain/0, type/0, @@ -150,7 +151,7 @@ command := debug, data := boolean() }. --type command() :: debug_command(). +%% -type command() :: debug_command(). -type uint8() :: 0..16#FF. -type uint16() :: 0..16#FFFF. @@ -884,8 +885,16 @@ info() -> nif_info(). --spec command(Command) -> term() when - Command :: command(). +-spec debug(D) -> ok when + D :: boolean(). + +debug(D) when is_boolean(D) -> + command(#{command => debug, + data => D}). + + +-spec command(Command) -> ok when + Command :: debug_command(). command(#{command := debug, data := Dbg} = Command) when is_boolean(Dbg) -> -- cgit v1.2.1