summaryrefslogtreecommitdiff
path: root/gcc/ada/g-socket.ads
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2005-11-15 13:50:37 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2005-11-15 13:50:37 +0000
commit02747205c562d60e12b1c96b8cd6d3ee6eedea3a (patch)
treed1576a6497bfbada92fc3b0b451f8c360df4d37d /gcc/ada/g-socket.ads
parentaa976da570b177e1a38dddbb3bf035c240bb415f (diff)
downloadgcc-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.ads58
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