diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-11-15 13:50:37 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-11-15 13:50:37 +0000 |
commit | 02747205c562d60e12b1c96b8cd6d3ee6eedea3a (patch) | |
tree | d1576a6497bfbada92fc3b0b451f8c360df4d37d /gcc/ada/g-socket.ads | |
parent | aa976da570b177e1a38dddbb3bf035c240bb415f (diff) | |
download | gcc-02747205c562d60e12b1c96b8cd6d3ee6eedea3a.tar.gz |
2005-11-14 Thomas Quinot <quinot@adacore.com>
* g-soccon.ads: Minor reformatting. Update comments.
* gsocket.h: Include <sys/times.h> in the VxWorks case, in order to
gain visibility on the declaration of struct timeval.
* g-soccon-freebsd.ads,
g-soccon-darwin.ads,
g-soccon-tru64.ads,
g-soccon-aix.ads,
g-soccon-irix.ads,
g-soccon-hpux.ads,
g-soccon-solaris.ads,
g-soccon-vms.ads,
g-soccon-mingw.ads,
g-soccon-vxworks.ads (SIZEOF_tv_sec, SIZEOF_tv_usec): New constants.
* g-soccon-hpux-ia64.ads, g-soccon-linux-ppc.ads,
g-soccon-solaris-64.ads, g-soccon-linux-64.ads,
g-soccon-linux-x86.ads: New files.
* g-socthi-mingw.adb:
(Socket_Error_Message): Remove redundant use of GNAT.Sockets.Constants
* g-socthi-vxworks.ads, g-socthi-vms.ads, g-socthi-mingw.ads
(time_t, suseconds_t): New types constructed to match the tv_sec
and tv_usec fields of C struct timeval.
(Timeval): Construct structure in terms of the new types.
(Host_Errno): New function (imported from socket.c), returns last hosts
database error.
* g-socthi-vxworks.adb: Add error handling circuitry.
* g-socket.ads, g-socket.adb (To_Timeval): Reflect change of type for
components of struct timeval.
(Get_Host_By_Name, Get_Host_By_Address): Fix error reporting circuitry.
(Check_Selector): In error conditions, clear internal socket sets to
avoid a memory leak.
(Get_Socket_Option, Set_Socket_Option): Support for Multicast_If,
Send_Timeout, Receive_Timeout.
* g-socthi.ads (time_t, suseconds_t): New types constructed to match
the tv_sec and tv_usec fields of C struct timeval.
(Timeval): Construct structure in terms of the new types.
(Host_Errno): New function (imported from socket.c), returns last hosts
database error.
* socket.c (__gnat_get_h_errno): New function to retrieve h_errno, the
hosts database last error code.
* gen-soccon.c: Complete value expansion should not be performed on
TARGET, as it has the form of a math expression, and some components
may be platform-defined macros.
For VxWorks, generate the OK and ERROR values.
New constants giving the sizes of the components of C struct timeval.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@106949 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/g-socket.ads')
-rw-r--r-- | gcc/ada/g-socket.ads | 58 |
1 files changed, 35 insertions, 23 deletions
diff --git a/gcc/ada/g-socket.ads b/gcc/ada/g-socket.ads index 7529c050892..6268545a5fa 100644 --- a/gcc/ada/g-socket.ads +++ b/gcc/ada/g-socket.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2005 Ada Core Technologies, Inc. -- +-- Copyright (C) 2001-2005, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -489,7 +489,7 @@ package GNAT.Sockets is Host_Error : exception; -- Exception raised by the two following procedures. Once raised, its -- message contains a string describing the error code. This exception is - -- raised when an host entry can not be retrieved. + -- raised when an host entry cannot be retrieved. function Get_Host_By_Address (Address : Inet_Addr_Type; @@ -595,6 +595,16 @@ package GNAT.Sockets is Unknown_Server_Error, Cannot_Resolve_Error); + -- Timeval_Duration is a subtype of Standard.Duration because the full + -- range of Standard.Duration cannot be represented in the equivalent C + -- structure. Moreover, negative values are not allowed to avoid system + -- incompatibilities. + + Immediate : constant := 0.0; + Forever : constant := Duration (Integer'Last) * 1.0; + + subtype Timeval_Duration is Duration range Immediate .. Forever; + -- Get_Socket_Options and Set_Socket_Options manipulate options associated -- with a socket. Options may exist at multiple protocol levels in the -- communication stack. Socket_Level is the uppermost socket level. @@ -610,18 +620,21 @@ package GNAT.Sockets is -- a boolean to enable or disable this option. type Option_Name is ( - Keep_Alive, -- Enable sending of keep-alive messages - Reuse_Address, -- Allow bind to reuse local address - Broadcast, -- Enable datagram sockets to recv/send broadcast packets - Send_Buffer, -- Set/get the maximum socket send buffer in bytes - Receive_Buffer, -- Set/get the maximum socket recv buffer in bytes - Linger, -- Shutdown wait for msg to be sent or timeout occur - Error, -- Get and clear the pending socket error - No_Delay, -- Do not delay send to coalesce packets (TCP_NODELAY) - Add_Membership, -- Join a multicast group - Drop_Membership, -- Leave a multicast group - Multicast_TTL, -- Indicate the time-to-live of sent multicast packets - Multicast_Loop); -- Sent multicast packets are looped to the local socket + Keep_Alive, -- Enable sending of keep-alive messages + Reuse_Address, -- Allow bind to reuse local address + Broadcast, -- Enable datagram sockets to recv/send broadcasts + Send_Buffer, -- Set/get the maximum socket send buffer in bytes + Receive_Buffer, -- Set/get the maximum socket recv buffer in bytes + Linger, -- Shutdown wait for msg to be sent or timeout occur + Error, -- Get and clear the pending socket error + No_Delay, -- Do not delay send to coalesce packets (TCP_NODELAY) + Add_Membership, -- Join a multicast group + Drop_Membership, -- Leave a multicast group + Multicast_If, -- Set default outgoing interface for multicast packets + Multicast_TTL, -- Indicate the time-to-live of sent multicast packets + Multicast_Loop, -- Sent multicast packets are looped to local socket + Send_Timeout, -- Set timeout value for output + Receive_Timeout); -- Set timeout value for input type Option_Type (Name : Option_Name := Keep_Alive) is record case Name is @@ -652,9 +665,16 @@ package GNAT.Sockets is Multicast_Address : Inet_Addr_Type; Local_Interface : Inet_Addr_Type; + when Multicast_If => + Outgoing_If : Inet_Addr_Type; + when Multicast_TTL => Time_To_Live : Natural; + when Send_Timeout | + Receive_Timeout => + Timeout : Timeval_Duration; + end case; end record; @@ -935,15 +955,7 @@ package GNAT.Sockets is type Selector_Type is limited private; type Selector_Access is access all Selector_Type; - -- Selector_Duration is a subtype of Standard.Duration because the full - -- range of Standard.Duration cannot be represented in the equivalent C - -- structure. Moreover, negative values are not allowed to avoid system - -- incompatibilities. - - Immediate : constant := 0.0; - Forever : constant := Duration (Integer'Last) * 1.0; - - subtype Selector_Duration is Duration range Immediate .. Forever; + subtype Selector_Duration is Timeval_Duration; procedure Create_Selector (Selector : out Selector_Type); -- Create a new selector |