From ba4b0ff7bf355a4fec434792495945872bb3efc5 Mon Sep 17 00:00:00 2001 From: Micael Karlberg Date: Mon, 23 Jul 2018 12:41:36 +0200 Subject: [socket-nif] Updated types for [recv|send]msg Updated and added types for the sendmsg and recvmsg functions. OTP-14831 --- erts/preloaded/ebin/socket.beam | Bin 56604 -> 56700 bytes erts/preloaded/src/socket.erl | 52 +++++++++++++++++++++------------------- 2 files changed, 28 insertions(+), 24 deletions(-) (limited to 'erts/preloaded') diff --git a/erts/preloaded/ebin/socket.beam b/erts/preloaded/ebin/socket.beam index 54cc44db54..b00d272f8b 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 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(). -- cgit v1.2.3