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 */
|