21#ifndef GLOBUS_XIO_SYSTEM_INCLUDE
22#define GLOBUS_XIO_SYSTEM_INCLUDE
24#include "globus_common.h"
25#include "globus_xio_types.h"
31#define GLOBUS_XIO_SYSTEM_MODULE (&globus_i_xio_system_module)
32extern globus_module_descriptor_t globus_i_xio_system_module;
38#define GLOBUS_XIO_SYSTEM_INVALID_FILE INVALID_HANDLE_VALUE
39#define GLOBUS_XIO_SYSTEM_INVALID_SOCKET INVALID_SOCKET
41typedef struct globus_l_xio_win32_file_s * globus_xio_system_file_handle_t;
42typedef struct globus_l_xio_win32_socket_s * globus_xio_system_socket_handle_t;
44typedef SOCKET globus_xio_system_socket_t;
45typedef HANDLE globus_xio_system_file_t;
49#define GLOBUS_XIO_SYSTEM_INVALID_FILE -1
50#define GLOBUS_XIO_SYSTEM_INVALID_SOCKET -1
53typedef struct globus_l_xio_system_s * globus_xio_system_file_handle_t;
54typedef struct globus_l_xio_system_s * globus_xio_system_socket_handle_t;
57typedef int globus_xio_system_socket_t;
58typedef int globus_xio_system_file_t;
61typedef int globus_xio_system_native_handle_t;
66 GLOBUS_XIO_SYSTEM_ERROR_SYSTEM_ERROR = 1024,
67 GLOBUS_XIO_SYSTEM_ERROR_TOO_MANY_FDS,
68 GLOBUS_XIO_SYSTEM_ERROR_ALREADY_REGISTERED,
69 GLOBUS_XIO_SYSTEM_ERROR_OPERATION_CANCELED,
70 GLOBUS_XIO_SYSTEM_ERROR_NOT_REGISTERED
71} globus_xio_system_error_type_t;
75 GLOBUS_XIO_SYSTEM_FILE = 1,
76 GLOBUS_XIO_SYSTEM_TCP,
77 GLOBUS_XIO_SYSTEM_TCP_LISTENER,
79} globus_xio_system_type_t;
82(*globus_xio_system_callback_t)(
83 globus_result_t result,
87(*globus_xio_system_data_callback_t)(
88 globus_result_t result,
101globus_xio_system_file_init(
102 globus_xio_system_file_handle_t * handle,
103 globus_xio_system_file_t fd);
112globus_xio_system_file_destroy(
113 globus_xio_system_file_handle_t handle);
116globus_xio_system_file_register_read(
117 globus_xio_operation_t op,
118 globus_xio_system_file_handle_t handle,
120 const globus_xio_iovec_t * iov,
122 globus_size_t waitforbytes,
123 globus_xio_system_data_callback_t callback,
127globus_xio_system_file_register_write(
128 globus_xio_operation_t op,
129 globus_xio_system_file_handle_t handle,
131 const globus_xio_iovec_t * iov,
133 globus_size_t waitforbytes,
134 globus_xio_system_data_callback_t callback,
139globus_xio_system_file_read(
140 globus_xio_system_file_handle_t handle,
142 const globus_xio_iovec_t * iov,
144 globus_size_t waitforbytes,
145 globus_size_t * nbytes);
148globus_xio_system_file_write(
149 globus_xio_system_file_handle_t handle,
151 const globus_xio_iovec_t * iov,
153 globus_size_t waitforbytes,
154 globus_size_t * nbytes);
158globus_xio_system_file_get_position(
159 globus_xio_system_file_t fd);
162globus_xio_system_file_get_size(
163 globus_xio_system_file_t fd);
165globus_xio_system_file_t
166globus_xio_system_convert_stdio(
170globus_xio_system_file_truncate(
171 globus_xio_system_file_t fd,
175globus_xio_system_file_open(
176 globus_xio_system_file_t * fd,
177 const char * filename,
182globus_xio_system_file_close(
183 globus_xio_system_file_t fd);
191globus_xio_system_socket_init(
192 globus_xio_system_socket_handle_t * handle,
193 globus_xio_system_socket_t socket,
194 globus_xio_system_type_t type);
203globus_xio_system_socket_destroy(
204 globus_xio_system_socket_handle_t handle);
207globus_xio_system_socket_register_connect(
208 globus_xio_operation_t op,
209 globus_xio_system_socket_handle_t handle,
210 globus_sockaddr_t * addr,
211 globus_xio_system_callback_t callback,
215globus_xio_system_socket_register_accept(
216 globus_xio_operation_t op,
217 globus_xio_system_socket_handle_t listener_handle,
218 globus_xio_system_socket_t * out_handle,
219 globus_xio_system_callback_t callback,
227globus_xio_system_socket_register_read(
228 globus_xio_operation_t op,
229 globus_xio_system_socket_handle_t handle,
230 const globus_xio_iovec_t * iov,
232 globus_size_t waitforbytes,
234 globus_sockaddr_t * out_from,
235 globus_xio_system_data_callback_t callback,
242globus_xio_system_socket_register_write(
243 globus_xio_operation_t op,
244 globus_xio_system_socket_handle_t handle,
245 const globus_xio_iovec_t * iov,
247 globus_size_t waitforbytes,
249 globus_sockaddr_t * to,
250 globus_xio_system_data_callback_t callback,
255globus_xio_system_socket_read(
256 globus_xio_system_socket_handle_t handle,
257 const globus_xio_iovec_t * iov,
259 globus_size_t waitforbytes,
261 globus_sockaddr_t * from,
262 globus_size_t * nbytes);
266globus_xio_system_socket_write(
267 globus_xio_system_socket_handle_t handle,
268 const globus_xio_iovec_t * iov,
270 globus_size_t waitforbytes,
272 globus_sockaddr_t * to,
273 globus_size_t * nbytes);
277globus_xio_system_socket_create(
278 globus_xio_system_socket_t * socket,
284globus_xio_system_socket_setsockopt(
285 globus_xio_system_socket_t socket,
289 globus_socklen_t optlen);
292globus_xio_system_socket_getsockopt(
293 globus_xio_system_socket_t socket,
297 globus_socklen_t * optlen);
300globus_xio_system_socket_getsockname(
301 globus_xio_system_socket_t socket,
302 struct sockaddr * name,
303 globus_socklen_t * namelen);
306globus_xio_system_socket_getpeername(
307 globus_xio_system_socket_t socket,
308 struct sockaddr * name,
309 globus_socklen_t * namelen);
312globus_xio_system_socket_bind(
313 globus_xio_system_socket_t socket,
314 struct sockaddr * addr,
315 globus_socklen_t addrlen);
318globus_xio_system_socket_listen(
319 globus_xio_system_socket_t socket,
323globus_xio_system_socket_connect(
324 globus_xio_system_socket_t socket,
325 const struct sockaddr * addr,
326 globus_socklen_t addrlen);
329globus_xio_system_socket_close(
330 globus_xio_system_socket_t socket);