(file) Return to sock.h CVS log (file) (dir) Up to [OMI] / omi / sock

  1 mike  1.1 /*
  2           **==============================================================================
  3           **
  4           ** Open Management Infrastructure (OMI)
  5           **
  6           ** Copyright (c) Microsoft Corporation
  7           **
  8 krisbash 1.3 ** Licensed under the Apache License, Version 2.0 (the "License"); you may not
  9              ** use this file except in compliance with the License. You may obtain a copy
 10              ** of the License at
 11              **
 12              **     http://www.apache.org/licenses/LICENSE-2.0
 13 mike     1.1 **
 14              ** THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 15 krisbash 1.3 ** KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
 16              ** WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
 17              ** MERCHANTABLITY OR NON-INFRINGEMENT.
 18 mike     1.1 **
 19 krisbash 1.3 ** See the Apache 2 License for the specific language governing permissions
 20 mike     1.1 ** and limitations under the License.
 21              **
 22              **==============================================================================
 23              */
 24              
 25              #ifndef _omi_sock_h
 26              #define _omi_sock_h
 27              
 28              #include "config.h"
 29              #include <string.h>
 30              #include <common.h>
 31              #include "addr.h"
 32              
 33              //#   if defined(CONFIG_POSIX)
 34              //// readv/writev headers
 35              //#       include <sys/uio.h>
 36              //#   endif
 37              
 38              BEGIN_EXTERNC
 39              
 40              #if defined(CONFIG_OS_WINDOWS)
 41 mike     1.1 # if defined(_WIN64)
 42 krisbash 1.3     typedef MI_Uint64 Sock;
 43 mike     1.1 # else
 44 krisbash 1.3     typedef MI_Uint32 Sock;
 45 mike     1.1 # endif
 46 krisbash 1.3 # define INVALID_SOCK INVALID_SOCKET
 47 mike     1.1 #else
 48 krisbash 1.3   typedef int Sock;
 49              # define INVALID_SOCK ((Sock)-1)
 50 mike     1.1 #endif
 51              
 52              typedef struct _IOVec
 53              {
 54                  void *ptr;     /* Pointer to data.  */
 55                  size_t len;     /* Length of data.  */
 56              }
 57              IOVec;
 58              
 59              MI_Result Sock_Start();
 60              
 61              void Sock_Stop();
 62              
 63              MI_Result Sock_Create(
 64 krisbash 1.3     Sock* sock,
 65                  MI_Boolean is_ipv6);
 66 mike     1.1 
 67              MI_Result Sock_Close(
 68                  Sock self);
 69              
 70              MI_Result Sock_Bind(
 71 krisbash 1.3     Sock self,
 72 mike     1.1     const Addr* addr);
 73              
 74              MI_Result Sock_Listen(
 75                  Sock self);
 76              
 77              MI_Result Sock_Accept(
 78 krisbash 1.3     Sock self,
 79                  Sock* sock,
 80 mike     1.1     Addr* addr);
 81              
 82              MI_Result Sock_Connect(
 83 krisbash 1.3     Sock self,
 84 mike     1.1     const Addr* addr);
 85              
 86              MI_Result Sock_ReuseAddr(
 87                  Sock self,
 88                  MI_Boolean flag);
 89              
 90              MI_Result Sock_SetBlocking(
 91                  Sock self,
 92                  MI_Boolean flag);
 93              
 94              MI_Result Sock_SetNoDelay(
 95                  Sock self,
 96                  MI_Boolean flag);
 97              
 98              MI_Result Sock_SetCloseOnExec(
 99 krisbash 1.3     Sock self,
100 mike     1.1     MI_Boolean closeOnExec);
101              
102              MI_Result Sock_Read(
103                  Sock self,
104                  void* data,
105                  size_t size,
106                  size_t* sizeRead);
107              
108              MI_Result Sock_ReadV(
109                  Sock self,
110                  const IOVec* iov,
111                  size_t  iovcnt,
112                  size_t* sizeRead);
113              
114              MI_Result Sock_Write(
115                  Sock self,
116                  const void* data,
117                  size_t size,
118                  size_t* sizeWritten);
119              
120              MI_Result Sock_WriteV(
121 mike     1.1     Sock self,
122                  const IOVec* iov,
123                  size_t  iovcnt,
124                  size_t* sizeWritten);
125              
126              MI_Result Sock_CreateListener(
127                  Sock* sock,
128                  const Addr* addr);
129              
130              /* AF_LOCAL family */
131              MI_Result Sock_CreateLocalListener(
132                  Sock* sock,
133                  const char* addr);
134              
135              /* AF_LOCAL, non-blocking, close-on-exec, connect */
136              MI_Result Sock_CreateLocalConnector(
137                  Sock* sock,
138                  const char* addr);
139              
140 krisbash 1.3 MI_Result Sock_CreateIPConnector(
141                  Sock* s,
142                  const char* hostAndPort);
143              
144 mike     1.1 MI_INLINE int Sock_GetLastError()
145              {
146              #if defined(CONFIG_OS_WINDOWS)
147                  return (int)GetLastError();
148              #else
149                  return (int)errno;
150              #endif
151              }
152              
153              END_EXTERNC
154              
155              #endif /* _omi_sock_h */

ViewCVS 0.9.2