Fri Jan 23 21:07:02 CET 2004 Paolo Molaro <lupus@ximian.com>
[mono.git] / mono / io-layer / socket-wrappers.h
1 /*
2  * Special header file to be included only in selected C files.
3  * We need to use the _wapi_ equivalents of the socket API when
4  * working with io-layer handles. On windows we define the wrappers to use
5  * the normal win32 functions.
6  */
7
8 #include <config.h>
9
10 #ifndef HAVE_SOCKLEN_T
11 #define socklen_t int
12 #endif
13
14 #ifdef PLATFORM_WIN32
15 #define _wapi_accept accept 
16 #define _wapi_bind bind 
17 #define _wapi_connect connect 
18 #define _wapi_getpeername getpeername 
19 #define _wapi_getsockname getsockname 
20 #define _wapi_getsockopt getsockopt 
21 #define _wapi_listen listen 
22 #define _wapi_recv recv 
23 #define _wapi_recvfrom recvfrom 
24 #define _wapi_send send 
25 #define _wapi_sendto sendto 
26 #define _wapi_setsockopt setsockopt 
27 #define _wapi_shutdown shutdown 
28 #define _wapi_socket socket 
29 #define _wapi_gethostbyname gethostbyname 
30 #define _wapi_select select 
31
32 /* No need to wrap FD_ZERO because it doesnt involve file
33  * descriptors
34 */
35 #define _wapi_FD_CLR FD_CLR
36 #define _wapi_FD_ISSET FD_ISSET
37 #define _wapi_FD_SET FD_SET
38
39 #else
40
41 extern guint32 _wapi_accept(guint32 handle, struct sockaddr *addr,
42                             socklen_t *addrlen);
43 extern int _wapi_bind(guint32 handle, struct sockaddr *my_addr,
44                       socklen_t addrlen);
45 extern int _wapi_connect(guint32 handle, const struct sockaddr *serv_addr,
46                          socklen_t addrlen);
47 extern int _wapi_getpeername(guint32 handle, struct sockaddr *name,
48                              socklen_t *namelen);
49 extern int _wapi_getsockname(guint32 handle, struct sockaddr *name,
50                              socklen_t *namelen);
51 extern int _wapi_getsockopt(guint32 handle, int level, int optname,
52                             void *optval, socklen_t *optlen);
53 extern int _wapi_listen(guint32 handle, int backlog);
54 extern int _wapi_recv(guint32 handle, void *buf, size_t len, int recv_flags);
55 extern int _wapi_recvfrom(guint32 handle, void *buf, size_t len,
56                           int recv_flags, struct sockaddr *from,
57                           socklen_t *fromlen);
58 extern int _wapi_send(guint32 handle, const void *msg, size_t len,
59                       int send_flags);
60 extern int _wapi_sendto(guint32 handle, const void *msg, size_t len,
61                         int send_flags, const struct sockaddr *to,
62                         socklen_t tolen);
63 extern int _wapi_setsockopt(guint32 handle, int level, int optname,
64                             const void *optval, socklen_t optlen);
65 extern int _wapi_shutdown(guint32 handle, int how);
66 extern guint32 _wapi_socket(int domain, int type, int protocol);;
67 extern struct hostent *_wapi_gethostbyname(const char *hostname);
68 extern int _wapi_select(int nfds, fd_set *readfds, fd_set *writefds,
69                         fd_set *exceptfds, struct timeval *timeout);
70
71 extern void _wapi_FD_CLR(guint32 handle, fd_set *set);
72 extern int _wapi_FD_ISSET(guint32 handle, fd_set *set);
73 extern void _wapi_FD_SET(guint32 handle, fd_set *set);
74
75 #endif /* PLATFORM_WIN32 */
76