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 #if !(defined (ACE_HAS_WINCE) && (UNDER_CE < 500))
00084 
00085 
00086 
00087 
00088 
00089   extern ACE_Export
00090   ACE_HANDLE accept (ACE_HANDLE handle,
00091                      struct sockaddr *addr,
00092                      int *addrlen,
00093                      const ACE_Accept_QoS_Params &qos_params);
00094 #endif  
00095 
00096   ACE_NAMESPACE_INLINE_FUNCTION
00097   int bind (ACE_HANDLE s,
00098             struct sockaddr *name,
00099             int namelen);
00100 
00101   
00102   ACE_NAMESPACE_INLINE_FUNCTION
00103   int closesocket (ACE_HANDLE s);
00104 
00105 
00106   ACE_NAMESPACE_INLINE_FUNCTION
00107   int connect (ACE_HANDLE handle,
00108                struct sockaddr *addr,
00109                int addrlen);
00110 
00111 #if !(defined (ACE_HAS_WINCE) && (UNDER_CE < 500))
00112 
00113 
00114 
00115 
00116 
00117   extern ACE_Export
00118   int connect (ACE_HANDLE handle,
00119                const sockaddr *addr,
00120                int addrlen,
00121                const ACE_QoS_Params &qos_params);
00122 #endif  
00123 
00124 
00125 
00126   ACE_NAMESPACE_INLINE_FUNCTION
00127   int enum_protocols (int *protocols,
00128                       ACE_Protocol_Info *protocol_buffer,
00129                       u_long *buffer_length);
00130 
00131   ACE_NAMESPACE_INLINE_FUNCTION
00132   int getpeername (ACE_HANDLE handle,
00133                    struct sockaddr *addr,
00134                    int *addrlen);
00135 
00136   ACE_NAMESPACE_INLINE_FUNCTION
00137   int getsockname (ACE_HANDLE handle,
00138                    struct sockaddr *addr,
00139                    int *addrlen);
00140   ACE_NAMESPACE_INLINE_FUNCTION
00141   int getsockopt (ACE_HANDLE handle,
00142                   int level,
00143                   int optname,
00144                   char *optval,
00145                   int *optlen);
00146 
00147 #if !(defined (ACE_HAS_WINCE) && (UNDER_CE < 500))
00148 
00149   extern ACE_Export
00150   ACE_HANDLE join_leaf (ACE_HANDLE socket,
00151                         const sockaddr *name,
00152                         int namelen,
00153                         const ACE_QoS_Params &qos_params);
00154 #endif  
00155 
00156   ACE_NAMESPACE_INLINE_FUNCTION
00157   int listen (ACE_HANDLE handle,
00158               int backlog);
00159 
00160   ACE_NAMESPACE_INLINE_FUNCTION
00161   ssize_t recv (ACE_HANDLE handle,
00162                 char *buf,
00163                 size_t len,
00164                 int flags = 0);
00165 
00166   ACE_NAMESPACE_INLINE_FUNCTION
00167   ssize_t recvfrom (ACE_HANDLE handle,
00168                     char *buf,
00169                     size_t len,
00170                     int flags,
00171                     struct sockaddr *addr,
00172                     int *addrlen);
00173 
00174   ACE_NAMESPACE_INLINE_FUNCTION
00175   ssize_t recvfrom (ACE_HANDLE handle,
00176                     iovec *buffers,
00177                     int buffer_count,
00178                     size_t &number_of_bytes_recvd,
00179                     int &flags,
00180                     struct sockaddr *addr,
00181                     int *addrlen,
00182                     ACE_OVERLAPPED *overlapped,
00183                     ACE_OVERLAPPED_COMPLETION_FUNC func);
00184 
00185   ACE_NAMESPACE_INLINE_FUNCTION
00186   ssize_t recvmsg (ACE_HANDLE handle,
00187                    struct msghdr *msg,
00188                    int flags);
00189 
00190   ACE_NAMESPACE_INLINE_FUNCTION
00191   ssize_t recvv (ACE_HANDLE handle,
00192                  iovec *iov,
00193                  int iovlen);
00194 
00195   ACE_NAMESPACE_INLINE_FUNCTION
00196   ssize_t send (ACE_HANDLE handle,
00197                 const char *buf,
00198                 size_t len,
00199                 int flags = 0);
00200 
00201   ACE_NAMESPACE_INLINE_FUNCTION
00202   ssize_t sendmsg (ACE_HANDLE handle,
00203                    const struct msghdr *msg,
00204                    int flags);
00205 
00206   ACE_NAMESPACE_INLINE_FUNCTION
00207   ssize_t sendto (ACE_HANDLE handle,
00208                   const char *buf,
00209                   size_t len,
00210                   int flags,
00211                   const struct sockaddr *addr,
00212                   int addrlen);
00213 
00214   ACE_NAMESPACE_INLINE_FUNCTION
00215   ssize_t sendto (ACE_HANDLE handle,
00216                   const iovec *buffers,
00217                   int buffer_count,
00218                   size_t &number_of_bytes_sent,
00219                   int flags,
00220                   const struct sockaddr *addr,
00221                   int addrlen,
00222                   ACE_OVERLAPPED *overlapped,
00223                   ACE_OVERLAPPED_COMPLETION_FUNC func);
00224 
00225   ACE_NAMESPACE_INLINE_FUNCTION
00226   ssize_t sendv (ACE_HANDLE handle,
00227                  const iovec *iov,
00228                  int iovcnt);
00229 
00230 
00231 
00232   ACE_NAMESPACE_INLINE_FUNCTION
00233   int setsockopt (ACE_HANDLE handle,
00234                   int level,
00235                   int optname,
00236                   const char *optval,
00237                   int optlen);
00238 
00239   ACE_NAMESPACE_INLINE_FUNCTION
00240   int shutdown (ACE_HANDLE handle,
00241                 int how);
00242 
00243 #if defined (__linux__) && defined (ACE_HAS_IPV6)
00244   ACE_NAMESPACE_INLINE_FUNCTION
00245   unsigned int if_nametoindex (const char *ifname);
00246 
00247   ACE_NAMESPACE_INLINE_FUNCTION
00248   char *if_indextoname (unsigned int ifindex, char *ifname);
00249 
00250   ACE_NAMESPACE_INLINE_FUNCTION
00251   struct if_nameindex *if_nameindex (void);
00252 
00253   ACE_NAMESPACE_INLINE_FUNCTION
00254   void if_freenameindex (struct if_nameindex *ptr);
00255 #endif 
00256 
00257 
00258 
00259   extern ACE_Export
00260   int socket_init (int version_high = 1,
00261                    int version_low = 1);
00262 
00263 
00264   extern ACE_Export
00265   int socket_fini (void);
00266 
00267 
00268   ACE_NAMESPACE_INLINE_FUNCTION
00269   ACE_HANDLE socket (int protocol_family,
00270                      int type,
00271                      int proto);
00272 
00273 
00274 
00275   ACE_NAMESPACE_INLINE_FUNCTION
00276   ACE_HANDLE socket (int protocol_family,
00277                      int type,
00278                      int proto,
00279                      ACE_Protocol_Info *protocolinfo,
00280                      ACE_SOCK_GROUP g,
00281                      u_long flags);
00282 
00283   ACE_NAMESPACE_INLINE_FUNCTION
00284   int socketpair (int domain,
00285                   int type,
00286                   int protocol,
00287                   ACE_HANDLE sv[2]);
00288 
00289 } 
00290 
00291 ACE_END_VERSIONED_NAMESPACE_DECL
00292 
00293 # if defined (ACE_HAS_INLINED_OSCALLS)
00294 #   if defined (ACE_INLINE)
00295 #     undef ACE_INLINE
00296 #   endif 
00297 #   define ACE_INLINE inline
00298 #   include "ace/OS_NS_sys_socket.inl"
00299 # endif 
00300 
00301 # include  "ace/post.h"
00302 #endif