00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef ACE_OS_NS_SYS_SOCKET_H
00018 # define ACE_OS_NS_SYS_SOCKET_H
00019
00020 # include "ace/pre.h"
00021
00022 # include "ace/config-all.h"
00023
00024 # if !defined (ACE_LACKS_PRAGMA_ONCE)
00025 # pragma once
00026 # endif
00027
00028 #include "ace/os_include/sys/os_socket.h"
00029 #include "ace/os_include/net/os_if.h"
00030 #include "ace/OS_NS_stropts.h"
00031 #include "ace/ACE_export.h"
00032
00033 #if defined (ACE_EXPORT_MACRO)
00034 # undef ACE_EXPORT_MACRO
00035 #endif
00036 #define ACE_EXPORT_MACRO ACE_Export
00037
00038
00039 #if defined (SD_RECEIVE)
00040 #define ACE_SHUTDOWN_READ SD_RECEIVE
00041 #elif defined (SHUT_RD)
00042 #define ACE_SHUTDOWN_READ SHUT_RD
00043 #else
00044 #define ACE_SHUTDOWN_READ 0
00045 #endif
00046
00047 #if defined (SD_SEND)
00048 #define ACE_SHUTDOWN_WRITE SD_SEND
00049 #elif defined (SHUT_WR)
00050 #define ACE_SHUTDOWN_WRITE SHUT_WR
00051 #else
00052 #define ACE_SHUTDOWN_WRITE 1
00053 #endif
00054
00055 #if defined (SD_BOTH)
00056 #define ACE_SHUTDOWN_BOTH SD_BOTH
00057 #elif defined (SHUT_RDWR)
00058 #define ACE_SHUTDOWN_BOTH SHUT_RDWR
00059 #else
00060 #define ACE_SHUTDOWN_BOTH 2
00061 #endif
00062
00063 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00064
00065 class ACE_Accept_QoS_Params;
00066 class ACE_QoS_Params;
00067
00068 namespace ACE_OS
00069 {
00070
00071 # if defined (ACE_WIN32)
00072
00073 extern ACE_Export int socket_initialized_;
00074 # endif
00075
00076
00077
00078 ACE_NAMESPACE_INLINE_FUNCTION
00079 ACE_HANDLE accept (ACE_HANDLE handle,
00080 struct sockaddr *addr,
00081 int *addrlen);
00082
00083
00084
00085
00086
00087
00088 extern ACE_Export
00089 ACE_HANDLE accept (ACE_HANDLE handle,
00090 struct sockaddr *addr,
00091 int *addrlen,
00092 const ACE_Accept_QoS_Params &qos_params);
00093
00094 ACE_NAMESPACE_INLINE_FUNCTION
00095 int bind (ACE_HANDLE s,
00096 struct sockaddr *name,
00097 int namelen);
00098
00099
00100 ACE_NAMESPACE_INLINE_FUNCTION
00101 int closesocket (ACE_HANDLE s);
00102
00103
00104 ACE_NAMESPACE_INLINE_FUNCTION
00105 int connect (ACE_HANDLE handle,
00106 struct sockaddr *addr,
00107 int addrlen);
00108
00109
00110
00111
00112
00113
00114 extern ACE_Export
00115 int connect (ACE_HANDLE handle,
00116 const sockaddr *addr,
00117 int addrlen,
00118 const ACE_QoS_Params &qos_params);
00119
00120
00121
00122 ACE_NAMESPACE_INLINE_FUNCTION
00123 int enum_protocols (int *protocols,
00124 ACE_Protocol_Info *protocol_buffer,
00125 u_long *buffer_length);
00126
00127 ACE_NAMESPACE_INLINE_FUNCTION
00128 int getpeername (ACE_HANDLE handle,
00129 struct sockaddr *addr,
00130 int *addrlen);
00131
00132 ACE_NAMESPACE_INLINE_FUNCTION
00133 int getsockname (ACE_HANDLE handle,
00134 struct sockaddr *addr,
00135 int *addrlen);
00136 ACE_NAMESPACE_INLINE_FUNCTION
00137 int getsockopt (ACE_HANDLE handle,
00138 int level,
00139 int optname,
00140 char *optval,
00141 int *optlen);
00142
00143
00144 extern ACE_Export
00145 ACE_HANDLE join_leaf (ACE_HANDLE socket,
00146 const sockaddr *name,
00147 int namelen,
00148 const ACE_QoS_Params &qos_params);
00149
00150 ACE_NAMESPACE_INLINE_FUNCTION
00151 int listen (ACE_HANDLE handle,
00152 int backlog);
00153
00154 ACE_NAMESPACE_INLINE_FUNCTION
00155 ssize_t recv (ACE_HANDLE handle,
00156 char *buf,
00157 size_t len,
00158 int flags = 0);
00159
00160 ACE_NAMESPACE_INLINE_FUNCTION
00161 ssize_t recvfrom (ACE_HANDLE handle,
00162 char *buf,
00163 size_t len,
00164 int flags,
00165 struct sockaddr *addr,
00166 int *addrlen);
00167
00168 ACE_NAMESPACE_INLINE_FUNCTION
00169 ssize_t recvfrom (ACE_HANDLE handle,
00170 iovec *buffers,
00171 int buffer_count,
00172 size_t &number_of_bytes_recvd,
00173 int &flags,
00174 struct sockaddr *addr,
00175 int *addrlen,
00176 ACE_OVERLAPPED *overlapped,
00177 ACE_OVERLAPPED_COMPLETION_FUNC func);
00178
00179 ACE_NAMESPACE_INLINE_FUNCTION
00180 ssize_t recvmsg (ACE_HANDLE handle,
00181 struct msghdr *msg,
00182 int flags);
00183
00184 ACE_NAMESPACE_INLINE_FUNCTION
00185 ssize_t recvv (ACE_HANDLE handle,
00186 iovec *iov,
00187 int iovlen);
00188
00189 ACE_NAMESPACE_INLINE_FUNCTION
00190 ssize_t send (ACE_HANDLE handle,
00191 const char *buf,
00192 size_t len,
00193 int flags = 0);
00194
00195 ACE_NAMESPACE_INLINE_FUNCTION
00196 ssize_t sendmsg (ACE_HANDLE handle,
00197 const struct msghdr *msg,
00198 int flags);
00199
00200 ACE_NAMESPACE_INLINE_FUNCTION
00201 ssize_t sendto (ACE_HANDLE handle,
00202 const char *buf,
00203 size_t len,
00204 int flags,
00205 const struct sockaddr *addr,
00206 int addrlen);
00207
00208 ACE_NAMESPACE_INLINE_FUNCTION
00209 ssize_t sendto (ACE_HANDLE handle,
00210 const iovec *buffers,
00211 int buffer_count,
00212 size_t &number_of_bytes_sent,
00213 int flags,
00214 const struct sockaddr *addr,
00215 int addrlen,
00216 ACE_OVERLAPPED *overlapped,
00217 ACE_OVERLAPPED_COMPLETION_FUNC func);
00218
00219 ACE_NAMESPACE_INLINE_FUNCTION
00220 ssize_t sendv (ACE_HANDLE handle,
00221 const iovec *iov,
00222 int iovcnt);
00223
00224
00225
00226 ACE_NAMESPACE_INLINE_FUNCTION
00227 int setsockopt (ACE_HANDLE handle,
00228 int level,
00229 int optname,
00230 const char *optval,
00231 int optlen);
00232
00233 ACE_NAMESPACE_INLINE_FUNCTION
00234 int shutdown (ACE_HANDLE handle,
00235 int how);
00236
00237 #if defined (__linux__) && defined (ACE_HAS_IPV6)
00238 ACE_NAMESPACE_INLINE_FUNCTION
00239 unsigned int if_nametoindex (const char *ifname);
00240
00241 ACE_NAMESPACE_INLINE_FUNCTION
00242 char *if_indextoname (unsigned int ifindex, char *ifname);
00243
00244 ACE_NAMESPACE_INLINE_FUNCTION
00245 struct if_nameindex *if_nameindex (void);
00246
00247 ACE_NAMESPACE_INLINE_FUNCTION
00248 void if_freenameindex (struct if_nameindex *ptr);
00249 #endif
00250
00251
00252
00253 extern ACE_Export
00254 int socket_init (int version_high = 1,
00255 int version_low = 1);
00256
00257
00258 extern ACE_Export
00259 int socket_fini (void);
00260
00261
00262 ACE_NAMESPACE_INLINE_FUNCTION
00263 ACE_HANDLE socket (int protocol_family,
00264 int type,
00265 int proto);
00266
00267
00268
00269 ACE_NAMESPACE_INLINE_FUNCTION
00270 ACE_HANDLE socket (int protocol_family,
00271 int type,
00272 int proto,
00273 ACE_Protocol_Info *protocolinfo,
00274 ACE_SOCK_GROUP g,
00275 u_long flags);
00276
00277 ACE_NAMESPACE_INLINE_FUNCTION
00278 int socketpair (int domain,
00279 int type,
00280 int protocol,
00281 ACE_HANDLE sv[2]);
00282
00283 }
00284
00285 ACE_END_VERSIONED_NAMESPACE_DECL
00286
00287 # if defined (ACE_HAS_INLINED_OSCALLS)
00288 # if defined (ACE_INLINE)
00289 # undef ACE_INLINE
00290 # endif
00291 # define ACE_INLINE inline
00292 # include "ace/OS_NS_sys_socket.inl"
00293 # endif
00294
00295 # include "ace/post.h"
00296 #endif