aboutsummaryrefslogtreecommitdiffstats
path: root/erts/preloaded
diff options
context:
space:
mode:
authorMicael Karlberg <[email protected]>2018-07-23 12:41:36 +0200
committerMicael Karlberg <[email protected]>2018-09-18 14:50:18 +0200
commitba4b0ff7bf355a4fec434792495945872bb3efc5 (patch)
treee345160a5fa6dce95198e0ab5e5d911409cc8aba /erts/preloaded
parent31ef72ceda0bf5bba902bf18f3b445950516d6af (diff)
downloadotp-ba4b0ff7bf355a4fec434792495945872bb3efc5.tar.gz
otp-ba4b0ff7bf355a4fec434792495945872bb3efc5.tar.bz2
otp-ba4b0ff7bf355a4fec434792495945872bb3efc5.zip
[socket-nif] Updated types for [recv|send]msg
Updated and added types for the sendmsg and recvmsg functions. OTP-14831
Diffstat (limited to 'erts/preloaded')
-rw-r--r--erts/preloaded/ebin/socket.beambin56604 -> 56700 bytes
-rw-r--r--erts/preloaded/src/socket.erl52
2 files changed, 28 insertions, 24 deletions
diff --git a/erts/preloaded/ebin/socket.beam b/erts/preloaded/ebin/socket.beam
index 54cc44db54..b00d272f8b 100644
--- a/erts/preloaded/ebin/socket.beam
+++ b/erts/preloaded/ebin/socket.beam
Binary files differ
diff --git a/erts/preloaded/src/socket.erl b/erts/preloaded/src/socket.erl
index 49c7a3f56d..e9b9f44a2c 100644
--- a/erts/preloaded/src/socket.erl
+++ b/erts/preloaded/src/socket.erl
@@ -102,7 +102,10 @@
sctp_rtoinfo/0,
- msg_hdr/0,
+ msghdr_flag/0,
+ msghdr_flags/0,
+ msghdr/0,
+ cmsghdr/0,
uint8/0,
uint16/0,
@@ -485,26 +488,28 @@
-type shutdown_how() :: read | write | read_write.
-%% This is just a place-holder
--record(msg_hdr,
- {
- %% Optional address
- %% On an unconnected socket this is used to specify the target
- %% address for a datagram.
- %% For a connected socket, this field should be specifiedset to [].
- name :: list(),
-
- %% Scatter/gather array
- iov :: [binary()], % iovec(),
-
- %% Ancillary (control) data
- ctrl :: binary(),
-
- %% Unused
- flags = [] :: list()
- }).
--type msg_hdr() :: #msg_hdr{}.
-
+%% These are just place-holder(s) - used by the sendmsg/recvmsg functions...
+-type msghdr_flag() :: eor | trunc | ctrunc | oob | errqueue.
+-type msghdr_flags() :: [msghdr_flag()].
+-type msghdr() :: #{
+ %% *Optional* target address
+ %% *If* this field is specified for an unconnected
+ %% socket, then it will be used as destination for the
+ %% datagram.
+ target => sockaddr(),
+
+ iov => [binary()],
+
+ ctrl => cmsghdr(),
+
+ %% Only valid with recvmsg
+ flags => msghdr_flags()
+ }.
+-type cmsghdr() :: #{
+ level => protocol(),
+ type => integer(),
+ data => binary()
+ }.
-define(SOCKET_DOMAIN_LOCAL, 1).
-define(SOCKET_DOMAIN_UNIX, ?SOCKET_DOMAIN_LOCAL).
@@ -1721,11 +1726,10 @@ do_recvfrom(SockRef, BufSz, EFlags, Timeout) ->
%% ---------------------------------------------------------------------------
%%
-%% -spec recvmsg(Socket, [out] MsgHdr, Flags) -> {ok, Data} | {error, Reason} when
+%% -spec recvmsg(Socket, Flags) -> {ok, MsgHdr} | {error, Reason} when
%% Socket :: socket(),
-%% MsgHdr :: msg_hdr(),
+%% MsgHdr :: msghdr(),
%% Flags :: recv_flags(),
-%% Data :: binary(),
%% Reason :: term().