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

  1 mike  1.1 /*
  2           **==============================================================================
  3           **
  4           ** Open Management Infrastructure (OMI)
  5           **
  6           ** Copyright (c) Microsoft Corporation
  7           ** 
  8           ** 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           **
 14           ** THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 15           ** 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           **
 19           ** See the Apache 2 License for the specific language governing permissions 
 20           ** and limitations under the License.
 21           **
 22 mike  1.1 **==============================================================================
 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           # if defined(_WIN64)
 42           typedef MI_Uint64 Sock;
 43 mike  1.1 # else
 44           typedef MI_Uint32 Sock;
 45           # endif
 46           #else
 47           typedef int Sock;
 48           #endif
 49           
 50           #define INVALID_SOCK ((Sock)-1)
 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 mike  1.1     Sock* sock);
 65           
 66           MI_Result Sock_Close(
 67               Sock self);
 68           
 69           MI_Result Sock_Bind(
 70               Sock self, 
 71               const Addr* addr);
 72           
 73           MI_Result Sock_Listen(
 74               Sock self);
 75           
 76           MI_Result Sock_Accept(
 77               Sock self, 
 78               Sock* sock, 
 79               Addr* addr);
 80           
 81           MI_Result Sock_Connect(
 82               Sock self, 
 83               const Addr* addr);
 84           
 85 mike  1.1 MI_Result Sock_ReuseAddr(
 86               Sock self,
 87               MI_Boolean flag);
 88           
 89           MI_Result Sock_SetBlocking(
 90               Sock self,
 91               MI_Boolean flag);
 92           
 93           MI_Result Sock_SetNoDelay(
 94               Sock self,
 95               MI_Boolean flag);
 96           
 97           MI_Result Sock_SetCloseOnExec(
 98               Sock self, 
 99               MI_Boolean closeOnExec);
100           
101           MI_Result Sock_Read(
102               Sock self,
103               void* data,
104               size_t size,
105               size_t* sizeRead);
106 mike  1.1 
107           MI_Result Sock_ReadV(
108               Sock self,
109               const IOVec* iov,
110               size_t  iovcnt,
111               size_t* sizeRead);
112           
113           MI_Result Sock_Write(
114               Sock self,
115               const void* data,
116               size_t size,
117               size_t* sizeWritten);
118           
119           MI_Result Sock_WriteV(
120               Sock self,
121               const IOVec* iov,
122               size_t  iovcnt,
123               size_t* sizeWritten);
124           
125           MI_Result Sock_CreateListener(
126               Sock* sock,
127 mike  1.1     const Addr* addr);
128           
129           /* AF_LOCAL family */
130           MI_Result Sock_CreateLocalListener(
131               Sock* sock,
132               const char* addr);
133           
134           /* AF_LOCAL, non-blocking, close-on-exec, connect */
135           MI_Result Sock_CreateLocalConnector(
136               Sock* sock,
137               const char* addr);
138           
139           MI_INLINE int Sock_GetLastError()
140           {
141           #if defined(CONFIG_OS_WINDOWS)
142               return (int)GetLastError();
143           #else
144               return (int)errno;
145           #endif
146           }
147           
148 mike  1.1 END_EXTERNC
149           
150           #endif /* _omi_sock_h */

ViewCVS 0.9.2