2 #if !defined(GLOBUS_XIO_DRIVER_H)
3 #define GLOBUS_XIO_DRIVER_H 1
5 #include "globus_common.h"
6 #include "globus_xio_load.h"
7 #include "globus_common.h"
8 #include "globus_xio_types.h"
9 #include "globus_xio.h"
10 #include "globus_xio_util.h"
20 #define GlobusIXIOAttrGetDS(_out_ds, _in_attr, _in_driver) \
24 globus_i_xio_attr_t * _attr; \
25 globus_xio_driver_t _driver; \
26 globus_i_xio_attr_ent_t * _entry; \
30 _driver = (_in_driver); \
32 if(_in_attr == NULL) \
38 _entry = _attr->entry; \
39 for(_ctr = 0; _ctr < _attr->ndx && _ds == NULL; _ctr++) \
41 if(_entry[_ctr].driver == _driver) \
43 _ds = _entry[_ctr].driver_data; \
258 globus_xio_operation_t op,
259 globus_result_t result,
286 globus_xio_operation_t op,
287 globus_result_t result,
288 globus_size_t nbytes,
292 typedef globus_result_t
293 (*globus_xio_driver_push_driver_t)(
294 globus_xio_driver_t driver,
295 globus_xio_stack_t stack);
298 globus_xio_driver_attr_cntl(
299 globus_xio_operation_t op,
300 globus_xio_driver_t driver,
305 globus_xio_driver_data_descriptor_cntl(
306 globus_xio_operation_t op,
307 globus_xio_driver_t driver,
322 globus_xio_driver_handle_t handle,
323 globus_xio_driver_t driver,
330 typedef globus_result_t
331 (*globus_xio_driver_get_driver_t)(
332 globus_xio_driver_t * out_driver);
341 typedef globus_result_t
343 void ** out_driver_attr);
352 typedef globus_result_t
364 typedef globus_result_t
387 typedef globus_result_t
418 typedef globus_result_t
421 const globus_xio_contact_t * contact_info,
422 globus_xio_operation_t op);
450 globus_xio_driver_pass_server_init(
451 globus_xio_operation_t op,
452 const globus_xio_contact_t * contact_info,
453 void * driver_server);
469 typedef globus_result_t
471 void * driver_server);
493 typedef globus_result_t
495 void * driver_server,
496 globus_xio_operation_t op);
499 globus_xio_driver_pass_accept(
500 globus_xio_operation_t op,
508 (*globus_xio_driver_cancel_callback_t)(
509 globus_xio_operation_t op,
511 globus_xio_error_type_t reason);
534 globus_xio_operation_t op,
536 globus_result_t result);
555 typedef globus_result_t
557 void * driver_server,
565 typedef globus_result_t
566 (*globus_xio_driver_link_cntl_t)(
581 typedef globus_result_t
617 typedef globus_result_t
619 const globus_xio_contact_t * contact_info,
622 globus_xio_operation_t op);
628 typedef globus_result_t
630 const globus_xio_contact_t * contact_info,
633 globus_xio_operation_t op);
665 globus_xio_operation_t op,
666 const globus_xio_contact_t * contact_info,
691 void * driver_handle,
692 globus_xio_operation_t op,
693 globus_result_t result);
718 globus_xio_operation_t * operation,
719 globus_xio_driver_handle_t handle);
725 globus_xio_driver_operation_destroy(
726 globus_xio_operation_t operation);
732 globus_xio_driver_operation_cancel(
733 globus_xio_driver_handle_t handle,
734 globus_xio_operation_t operation);
746 globus_xio_operation_t operation);
759 typedef globus_result_t
767 globus_xio_driver_merge_handle(
768 globus_xio_operation_t op,
769 globus_xio_driver_handle_t handle);
793 typedef globus_result_t
795 void * driver_handle,
797 globus_xio_operation_t op);
817 globus_xio_operation_t op,
819 void * callback_arg);
838 globus_xio_operation_t op,
839 globus_result_t result);
867 typedef globus_result_t
869 void * driver_specific_handle,
870 const globus_xio_iovec_t * iovec,
872 globus_xio_operation_t op);
907 globus_xio_operation_t op,
908 globus_xio_iovec_t * iovec,
910 globus_size_t wait_for,
933 globus_xio_operation_t op,
934 globus_result_t result,
935 globus_size_t nread);
963 globus_xio_operation_t op);
989 globus_xio_operation_t op);
1017 typedef globus_result_t
1019 void * driver_specific_handle,
1020 const globus_xio_iovec_t * iovec,
1022 globus_xio_operation_t op);
1058 globus_xio_operation_t op,
1059 globus_xio_iovec_t * iovec,
1061 globus_size_t wait_for,
1084 globus_xio_operation_t op,
1085 globus_result_t result,
1086 globus_size_t nwritten);
1114 globus_xio_operation_t top_op,
1115 globus_xio_operation_t bottom_op);
1179 globus_xio_driver_init(
1180 globus_xio_driver_t * driver,
1181 const char * driver_name,
1188 globus_xio_driver_get_user_data(
1189 globus_xio_driver_t in_driver,
1190 void ** out_user_data);
1193 globus_xio_operation_attr_cntl(
1194 globus_xio_operation_t op,
1195 globus_xio_attr_cmd_t cmd,
1202 globus_xio_driver_destroy(
1203 globus_xio_driver_t driver);
1209 globus_xio_driver_set_transport(
1210 globus_xio_driver_t driver,
1221 globus_xio_driver_set_transform(
1222 globus_xio_driver_t driver,
1228 globus_xio_driver_push_driver_t push_driver_func);
1234 globus_xio_driver_set_server(
1235 globus_xio_driver_t driver,
1240 globus_xio_driver_link_cntl_t link_cntl_func,
1245 globus_xio_driver_t driver,
1251 globus_xio_driver_set_attr(
1252 globus_xio_driver_t driver,
1262 globus_xio_operation_block_timeout(
1263 globus_xio_operation_t op);
1266 globus_xio_operation_unblock_timeout(
1267 globus_xio_operation_t op);
1270 globus_xio_operation_refresh_timeout(
1271 globus_xio_operation_t op);
1275 globus_xio_operation_enable_cancel(
1276 globus_xio_operation_t op,
1277 globus_xio_driver_cancel_callback_t cb,
1281 globus_xio_operation_disable_cancel(
1282 globus_xio_operation_t op);
1285 globus_xio_operation_is_canceled(
1286 globus_xio_operation_t op);
1289 globus_xio_operation_get_wait_for(
1290 globus_xio_operation_t op);
1293 globus_xio_operation_get_driver_specific(
1294 globus_xio_operation_t op);
1297 globus_xio_operation_get_user_driver(
1298 globus_xio_operation_t op);
1301 globus_xio_operation_get_transport_user_driver(
1302 globus_xio_operation_t op);
1305 globus_xio_driver_handle_t
1306 globus_xio_operation_get_driver_handle(
1307 globus_xio_operation_t op);
1313 globus_xio_driver_handle_t
1314 globus_xio_operation_get_driver_self_handle(
1315 globus_xio_operation_t op);
1318 globus_xio_operation_get_data_descriptor(
1319 globus_xio_operation_t op,
1320 globus_bool_t force_create);
1323 globus_xio_operation_copy_stack(
1324 globus_xio_operation_t op,
1325 globus_xio_stack_t * stack);
1331 typedef globus_result_t
1332 (*globus_xio_string_cntl_parse_func_t)(
1342 typedef struct globus_xio_string_cntl_table_s
1346 globus_xio_string_cntl_parse_func_t parse_func;
1347 } globus_xio_string_cntl_table_t;
1404 globus_xio_driver_t driver,
1405 globus_xio_string_cntl_table_t * table);
1413 globus_xio_driver_t driver,
1414 globus_xio_string_cntl_table_t * table);
1495 globus_xio_string_cntl_formated_off(
1503 globus_xio_string_cntl_formated_int(
1511 globus_xio_string_cntl_string_list(
void globus_xio_driver_finished_accept(globus_xio_operation_t op, void *driver_link, globus_result_t result)
Definition: globus_xio_pass.c:1588
void globus_xio_driver_finished_open(void *driver_handle, globus_xio_operation_t op, globus_result_t result)
Definition: globus_xio_pass.c:141
void(* globus_xio_driver_data_callback_t)(globus_xio_operation_t op, globus_result_t result, globus_size_t nbytes, void *user_arg)
Definition: globus_xio_driver.h:285
globus_result_t(* globus_xio_driver_attr_copy_t)(void **dst, void *src)
Definition: globus_xio_driver.h:353
globus_result_t(* globus_xio_driver_read_t)(void *driver_specific_handle, const globus_xio_iovec_t *iovec, int iovec_count, globus_xio_operation_t op)
Definition: globus_xio_driver.h:868
globus_result_t(* globus_xio_driver_write_t)(void *driver_specific_handle, const globus_xio_iovec_t *iovec, int iovec_count, globus_xio_operation_t op)
Definition: globus_xio_driver.h:1018
globus_result_t(* globus_xio_driver_server_destroy_t)(void *driver_server)
Definition: globus_xio_driver.h:470
globus_result_t globus_xio_driver_handle_string_cntl_set_table(globus_xio_driver_t driver, globus_xio_string_cntl_table_t *table)
Definition: globus_xio_driver.c:2205
globus_result_t(* globus_xio_driver_attr_cntl_t)(void *attr, int cmd, va_list ap)
Definition: globus_xio_driver.h:388
globus_result_t globus_xio_string_cntl_string(void *attr, const char *key, const char *val, int cmd, globus_xio_driver_attr_cntl_t cntl_func)
Definition: globus_xio_attr.c:1413
globus_bool_t globus_xio_driver_eof_received(globus_xio_operation_t op)
Definition: globus_xio_driver.c:1887
globus_result_t(* globus_xio_driver_close_t)(void *driver_handle, void *driver_attr, globus_xio_operation_t op)
Close a handle.
Definition: globus_xio_driver.h:794
globus_result_t globus_xio_driver_handle_cntl(globus_xio_driver_handle_t driver_handle, globus_xio_driver_t driver, int cmd,...)
Definition: globus_xio_driver.c:1747
globus_result_t globus_xio_driver_pass_close(globus_xio_operation_t op, globus_xio_driver_callback_t cb, void *callback_arg)
Pass the close operation down the driver stack.
Definition: globus_xio_pass.c:379
globus_result_t globus_xio_driver_pass_read(globus_xio_operation_t op, globus_xio_iovec_t *iovec, int iovec_count, globus_size_t wait_for, globus_xio_driver_data_callback_t cb, void *user_arg)
Definition: globus_xio_pass.c:918
globus_result_t globus_xio_driver_operation_create(globus_xio_operation_t *operation, globus_xio_driver_handle_t driver_handle)
Definition: globus_xio_driver.c:1047
globus_result_t(* globus_xio_driver_transport_open_t)(const globus_xio_contact_t *contact_info, void *driver_link, void *driver_attr, globus_xio_operation_t op)
Open a handle.
Definition: globus_xio_driver.h:629
globus_result_t(* globus_xio_driver_attr_destroy_t)(void *driver_attr)
Definition: globus_xio_driver.h:365
globus_result_t globus_xio_string_cntl_float(void *attr, const char *key, const char *val, int cmd, globus_xio_driver_attr_cntl_t cntl_func)
Definition: globus_xio_attr.c:1385
void(* globus_xio_driver_callback_t)(globus_xio_operation_t op, globus_result_t result, void *user_arg)
Open and Close Callback Signature.
Definition: globus_xio_driver.h:257
globus_result_t(* globus_xio_driver_handle_cntl_t)(void *handle, int cmd, va_list ap)
Definition: globus_xio_driver.h:760
void globus_xio_driver_finished_write(globus_xio_operation_t op, globus_result_t result, globus_size_t nwritten)
Definition: globus_xio_pass.c:744
globus_result_t(* globus_xio_driver_server_init_t)(void *driver_attr, const globus_xio_contact_t *contact_info, globus_xio_operation_t op)
Definition: globus_xio_driver.h:419
globus_result_t(* globus_xio_driver_transform_open_t)(const globus_xio_contact_t *contact_info, void *driver_link, void *driver_attr, globus_xio_operation_t op)
Open a handle.
Definition: globus_xio_driver.h:618
globus_result_t(* globus_xio_driver_link_destroy_t)(void *driver_link)
Definition: globus_xio_driver.h:582
globus_result_t globus_xio_string_cntl_int(void *attr, const char *key, const char *val, int cmd, globus_xio_driver_attr_cntl_t cntl_func)
Definition: globus_xio_attr.c:1308
void globus_xio_driver_finished_close(globus_xio_operation_t op, globus_result_t result)
Definition: globus_xio_pass.c:522
globus_result_t globus_xio_string_cntl_bool(void *attr, const char *key, const char *val, int cmd, globus_xio_driver_attr_cntl_t cntl_func)
Definition: globus_xio_attr.c:1432
globus_result_t globus_xio_driver_pass_open(globus_xio_operation_t op, const globus_xio_contact_t *contact_info, globus_xio_driver_callback_t cb, void *user_arg)
Definition: globus_xio_pass.c:12
globus_bool_t globus_xio_driver_operation_is_blocking(globus_xio_operation_t op)
Definition: globus_xio_driver.c:2325
void globus_xio_driver_finished_read(globus_xio_operation_t op, globus_result_t result, globus_size_t nread)
Definition: globus_xio_pass.c:1105
globus_result_t(* globus_xio_driver_server_cntl_t)(void *driver_server, int cmd, va_list ap)
Definition: globus_xio_driver.h:556
globus_result_t(* globus_xio_driver_server_accept_t)(void *driver_server, globus_xio_operation_t op)
Definition: globus_xio_driver.h:494
globus_result_t globus_xio_driver_set_server_pre_init(globus_xio_driver_t driver, globus_xio_driver_server_init_t server_pre_init_func)
Server Pre-Init.
Definition: globus_xio_driver.c:2113
globus_result_t globus_xio_string_cntl_int_int(void *attr, const char *key, const char *val, int cmd, globus_xio_driver_attr_cntl_t cntl_func)
Definition: globus_xio_attr.c:1336
globus_result_t globus_xio_string_cntl_bouncer(globus_xio_driver_attr_cntl_t cntl_func, void *attr, int cmd,...)
Definition: globus_xio_attr.c:1175
globus_result_t(* globus_xio_driver_attr_init_t)(void **out_driver_attr)
Definition: globus_xio_driver.h:342
void globus_xio_driver_set_eof_received(globus_xio_operation_t op)
Definition: globus_xio_driver.c:1852
globus_result_t globus_xio_driver_string_cntl_set_table(globus_xio_driver_t driver, globus_xio_string_cntl_table_t *table)
Definition: globus_xio_driver.c:2175
globus_result_t globus_xio_driver_merge_operation(globus_xio_operation_t top_op, globus_xio_operation_t bottom_op)
globus_result_t globus_xio_driver_pass_write(globus_xio_operation_t op, globus_xio_iovec_t *iovec, int iovec_count, globus_size_t wait_for, globus_xio_driver_data_callback_t cb, void *user_arg)
Definition: globus_xio_pass.c:595