OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [rtems/] [c/] [src/] [lib/] [libbsp/] [i386/] [ts_386ex/] [tools/] [network_ada/] [adasockets/] [sockets.ads] - Blame information for rev 173

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 30 unneback
-----------------------------------------------------------------------------
2
--                                                                         --
3
--                         ADASOCKETS COMPONENTS                           --
4
--                                                                         --
5
--                             S O C K E T S                               --
6
--                                                                         --
7
--                                S p e c                                  --
8
--                                                                         --
9
--                        $ReleaseVersion: 0.1.3 $                         --
10
--                                                                         --
11
--  Copyright (C) 1998  École Nationale Supérieure des Télécommunications  --
12
--                                                                         --
13
--   AdaSockets is free software; you can  redistribute it and/or modify   --
14
--   it  under terms of the GNU  General  Public License as published by   --
15
--   the Free Software Foundation; either version 2, or (at your option)   --
16
--   any later version.   AdaSockets is distributed  in the hope that it   --
17
--   will be useful, but WITHOUT ANY  WARRANTY; without even the implied   --
18
--   warranty of MERCHANTABILITY   or FITNESS FOR  A PARTICULAR PURPOSE.   --
19
--   See the GNU General Public  License  for more details.  You  should   --
20
--   have received a copy of the  GNU General Public License distributed   --
21
--   with AdaSockets; see   file COPYING.  If  not,  write  to  the Free   --
22
--   Software  Foundation, 59   Temple Place -   Suite  330,  Boston, MA   --
23
--   02111-1307, USA.                                                      --
24
--                                                                         --
25
--   As a special exception, if  other  files instantiate generics  from   --
26
--   this unit, or  you link this  unit with other  files to produce  an   --
27
--   executable,  this  unit does  not  by  itself cause  the  resulting   --
28
--   executable to be  covered by the  GNU General Public License.  This   --
29
--   exception does  not  however invalidate any  other reasons  why the   --
30
--   executable file might be covered by the GNU Public License.           --
31
--                                                                         --
32
--   The main repository for this software is located at:                  --
33
--       http://www-inf.enst.fr/ANC/                                       --
34
--                                                                         --
35
-----------------------------------------------------------------------------
36
 
37
with Ada.Streams;
38
with Interfaces.C;
39
 
40
package Sockets is
41
 
42
   type Socket_FD is tagged private;
43
   --  A socket
44
 
45
   type Socket_Domain is (AF_INET);
46
   --  AF_INET: Internet sockets (yes, should be PF_INET, but they hold the
47
   --  same value)
48
 
49
   type Socket_Type is (SOCK_STREAM, SOCK_DGRAM);
50
   --  SOCK_STREAM: Stream mode   (TCP)
51
   --  SOCK_DGRAM:  Datagram mode (UDP, Multicast)
52
 
53
   procedure Socket
54
     (Sock   : out Socket_FD;
55
      Domain : in Socket_Domain := AF_INET;
56
      Typ    : in Socket_Type   := SOCK_STREAM);
57
   --  Create a socket of the given mode
58
 
59
   Connection_Refused : exception;
60
 
61
   procedure Connect
62
     (Socket : in Socket_FD;
63
      Host   : in String;
64
      Port   : in Positive);
65
   --  Connect a socket on a given host/port. Raise Connection_Refused if
66
   --  the connection has not been accepted by the other end.
67
 
68
   procedure Bind
69
     (Socket : in Socket_FD;
70
      Port   : in Positive);
71
   --  Bind a socket on a given port
72
 
73
   procedure Listen
74
     (Socket     : in Socket_FD;
75
      Queue_Size : in Positive := 5);
76
   --  Create a socket's listen queue
77
 
78
   type Socket_Level is (SOL_SOCKET, IPPROTO_IP);
79
 
80
   type Socket_Option is (SO_REUSEADDR, IP_MULTICAST_TTL,
81
                          IP_ADD_MEMBERSHIP, IP_DROP_MEMBERSHIP,
82
                          IP_MULTICAST_LOOP);
83
 
84
   procedure Setsockopt
85
     (Socket  : in Socket_FD'Class;
86
      Level   : in Socket_Level := SOL_SOCKET;
87
      Optname : in Socket_Option;
88
      Optval  : in Integer);
89
   --  Set a socket option
90
 
91
   generic
92
      Level   : Socket_Level;
93
      Optname : Socket_Option;
94
      type Opt_Type is private;
95
   procedure Customized_Setsockopt (Socket : in Socket_FD'Class;
96
                                    Optval : in Opt_Type);
97
   --  Low level control on setsockopt
98
 
99
   procedure Accept_Socket (Socket     : in Socket_FD;
100
                            New_Socket : out Socket_FD);
101
   --  Accept a connection on a socket
102
 
103
   Connection_Closed : exception;
104
 
105
   procedure Send (Socket : in Socket_FD;
106
                   Data   : in Ada.Streams.Stream_Element_Array);
107
   --  Send data on a socket. Raise Connection_Closed if the socket
108
   --  has been closed.
109
 
110
   function Receive (Socket : Socket_FD;
111
                     Max    : Ada.Streams.Stream_Element_Count := 4096)
112
     return Ada.Streams.Stream_Element_Array;
113
   --  Receive data from a socket. May raise Connection_Closed
114
 
115
   procedure Receive (Socket : in Socket_FD'Class;
116
                      Data   : out Ada.Streams.Stream_Element_Array);
117
   --  Fill data from a socket. Raise Connection_Closed if the socket has
118
   --  been closed before the end of the array.
119
 
120
   type Shutdown_Type is (Receive, Send, Both);
121
 
122
   procedure Shutdown (Socket : in Socket_FD;
123
                       How    : in Shutdown_Type := Both);
124
   --  Close a previously opened socket
125
 
126
   ---------------------------------
127
   -- String-oriented subprograms --
128
   ---------------------------------
129
 
130
   procedure Put (Socket : in Socket_FD'Class;
131
                  Str    : in String);
132
   --  Send a string on the socket
133
 
134
   procedure New_Line (Socket : in Socket_FD'Class;
135
                       Count  : in Natural := 1);
136
   --  Send CR/LF sequences on the socket
137
 
138
   procedure Put_Line (Socket : in Socket_FD'Class;
139
                       Str    : in String);
140
   --  Send a string + CR/LF on the socket
141
 
142
   function Get (Socket : Socket_FD'Class) return String;
143
   --  Get a string from the socket
144
 
145
   function Get_Line (Socket : Socket_FD'Class) return String;
146
   --  Get a full line from the socket. CR is ignored and LF is considered
147
   --  as an end-of-line marker.
148
 
149
private
150
 
151
   type Socket_FD is tagged record
152
      FD : Interfaces.C.int;
153
   end record;
154
 
155
end Sockets;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.