00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #if !defined(GLOBUS_XIO_H)
00018 #define GLOBUS_XIO_H
00019
00020 #include "globus_common.h"
00021 #include "globus_xio_types.h"
00022 #include "globus_xio_util.h"
00023 #include "globus_xio_load.h"
00024
00025 #ifdef __cplusplus
00026 extern "C" {
00027 #endif
00028
00029 #ifndef GLOBUS_GLOBAL_DOCUMENT_SET
00030
00034 #endif
00035
00190
00191
00192
00193
00228 globus_result_t
00229 globus_xio_attr_init(
00230 globus_xio_attr_t * attr);
00231
00258 globus_result_t
00259 globus_xio_attr_cntl(
00260 globus_xio_attr_t attr,
00261 globus_xio_driver_t driver,
00262 int cmd,
00263 ...);
00264
00270 globus_result_t
00271 globus_xio_attr_copy(
00272 globus_xio_attr_t * dst,
00273 globus_xio_attr_t src);
00274
00284 globus_result_t
00285 globus_xio_attr_destroy(
00286 globus_xio_attr_t attr);
00287
00288
00289
00290
00291
00292
00297 globus_result_t
00298 globus_xio_stack_init(
00299 globus_xio_stack_t * stack,
00300 globus_xio_attr_t stack_attr);
00301
00310 globus_result_t
00311 globus_xio_stack_push_driver(
00312 globus_xio_stack_t stack,
00313 globus_xio_driver_t driver);
00314
00319 globus_result_t
00320 globus_xio_stack_copy(
00321 globus_xio_stack_t * dst,
00322 globus_xio_stack_t src);
00323
00328 globus_result_t
00329 globus_xio_stack_destroy(
00330 globus_xio_stack_t stack);
00331
00332
00333
00334
00357 typedef void
00358 (*globus_xio_accept_callback_t)(
00359 globus_xio_server_t server,
00360 globus_xio_handle_t handle,
00361 globus_result_t result,
00362 void * user_arg);
00363
00371 typedef void
00372 (*globus_xio_server_callback_t)(
00373 globus_xio_server_t server,
00374 void * user_arg);
00375
00394 globus_result_t
00395 globus_xio_server_create(
00396 globus_xio_server_t * server,
00397 globus_xio_attr_t server_attr,
00398 globus_xio_stack_t stack);
00399
00414 globus_result_t
00415 globus_xio_server_get_contact_string(
00416 globus_xio_server_t server,
00417 char ** contact_string);
00418
00426 globus_result_t
00427 globus_xio_server_register_close(
00428 globus_xio_server_t server,
00429 globus_xio_server_callback_t cb,
00430 void * user_arg);
00431
00436 globus_result_t
00437 globus_xio_server_close(
00438 globus_xio_server_t server);
00439
00448 globus_result_t
00449 globus_xio_server_cntl(
00450 globus_xio_server_t server,
00451 globus_xio_driver_t driver,
00452 int cmd,
00453 ...);
00454
00463 globus_result_t
00464 globus_xio_server_accept(
00465 globus_xio_handle_t * out_handle,
00466 globus_xio_server_t server);
00467
00475 globus_result_t
00476 globus_xio_server_register_accept(
00477 globus_xio_server_t server,
00478 globus_xio_accept_callback_t cb,
00479 void * user_arg);
00480
00489 globus_result_t
00490 globus_xio_handle_create(
00491 globus_xio_handle_t * handle,
00492 globus_xio_stack_t stack);
00493
00494
00495
00496
00497
00498
00499
00500
00501
00521 typedef globus_bool_t
00522 (*globus_xio_timeout_callback_t)(
00523 globus_xio_handle_t handle,
00524 globus_xio_operation_type_t type,
00525 void * user_arg);
00526
00527 typedef globus_bool_t
00528 (*globus_xio_timeout_server_callback_t)(
00529 globus_xio_server_t server,
00530 globus_xio_operation_type_t type);
00531
00532
00533
00534
00535
00536
00549 globus_result_t
00550 globus_xio_data_descriptor_init(
00551 globus_xio_data_descriptor_t * data_desc,
00552 globus_xio_handle_t handle);
00553
00558 globus_result_t
00559 globus_xio_data_descriptor_destroy(
00560 globus_xio_data_descriptor_t data_desc);
00561
00570 globus_result_t
00571 globus_xio_data_descriptor_cntl(
00572 globus_xio_data_descriptor_t data_desc,
00573 globus_xio_driver_t driver,
00574 int cmd,
00575 ...);
00576
00577
00578
00579
00587 typedef void (*globus_xio_callback_t)(
00588 globus_xio_handle_t handle,
00589 globus_result_t result,
00590 void * user_arg);
00591
00601 typedef void (*globus_xio_data_callback_t)(
00602 globus_xio_handle_t handle,
00603 globus_result_t result,
00604 globus_byte_t * buffer,
00605 globus_size_t len,
00606 globus_size_t nbytes,
00607 globus_xio_data_descriptor_t data_desc,
00608 void * user_arg);
00609
00619 typedef void (*globus_xio_iovec_callback_t)(
00620 globus_xio_handle_t handle,
00621 globus_result_t result,
00622 globus_xio_iovec_t * iovec,
00623 int count,
00624 globus_size_t nbytes,
00625 globus_xio_data_descriptor_t data_desc,
00626 void * user_arg);
00627
00640 globus_result_t
00641 globus_xio_handle_cntl(
00642 globus_xio_handle_t handle,
00643 globus_xio_driver_t driver,
00644 int cmd,
00645 ...);
00646
00707 globus_result_t
00708 globus_xio_register_open(
00709 globus_xio_handle_t handle,
00710 const char * contact_string,
00711 globus_xio_attr_t attr,
00712 globus_xio_callback_t cb,
00713 void * user_arg);
00714
00719 globus_result_t
00720 globus_xio_open(
00721 globus_xio_handle_t handle,
00722 const char * contact_string,
00723 globus_xio_attr_t attr);
00724
00729 globus_result_t
00730 globus_xio_register_read(
00731 globus_xio_handle_t handle,
00732 globus_byte_t * buffer,
00733 globus_size_t buffer_length,
00734 globus_size_t waitforbytes,
00735 globus_xio_data_descriptor_t data_desc,
00736 globus_xio_data_callback_t cb,
00737 void * user_arg);
00738
00743 globus_result_t
00744 globus_xio_read(
00745 globus_xio_handle_t handle,
00746 globus_byte_t * buffer,
00747 globus_size_t buffer_length,
00748 globus_size_t waitforbytes,
00749 globus_size_t * nbytes,
00750 globus_xio_data_descriptor_t data_desc);
00751
00756 globus_result_t
00757 globus_xio_register_readv(
00758 globus_xio_handle_t handle,
00759 globus_xio_iovec_t * iovec,
00760 int iovec_count,
00761 globus_size_t waitforbytes,
00762 globus_xio_data_descriptor_t data_desc,
00763 globus_xio_iovec_callback_t cb,
00764 void * user_arg);
00765
00770 globus_result_t
00771 globus_xio_readv(
00772 globus_xio_handle_t handle,
00773 globus_xio_iovec_t * iovec,
00774 int iovec_count,
00775 globus_size_t waitforbytes,
00776 globus_size_t * nbytes,
00777 globus_xio_data_descriptor_t data_desc);
00778
00783 globus_result_t
00784 globus_xio_register_write(
00785 globus_xio_handle_t handle,
00786 globus_byte_t * buffer,
00787 globus_size_t buffer_length,
00788 globus_size_t waitforbytes,
00789 globus_xio_data_descriptor_t data_desc,
00790 globus_xio_data_callback_t cb,
00791 void * user_arg);
00792
00797 globus_result_t
00798 globus_xio_write(
00799 globus_xio_handle_t handle,
00800 globus_byte_t * buffer,
00801 globus_size_t buffer_length,
00802 globus_size_t waitforbytes,
00803 globus_size_t * nbytes,
00804 globus_xio_data_descriptor_t data_desc);
00805
00810 globus_result_t
00811 globus_xio_register_writev(
00812 globus_xio_handle_t handle,
00813 globus_xio_iovec_t * iovec,
00814 int iovec_count,
00815 globus_size_t waitforbytes,
00816 globus_xio_data_descriptor_t data_desc,
00817 globus_xio_iovec_callback_t cb,
00818 void * user_arg);
00819
00824 globus_result_t
00825 globus_xio_writev(
00826 globus_xio_handle_t handle,
00827 globus_xio_iovec_t * iovec,
00828 int iovec_count,
00829 globus_size_t waitforbytes,
00830 globus_size_t * nbytes,
00831 globus_xio_data_descriptor_t data_desc);
00832
00833
00837 globus_result_t
00838 globus_xio_handle_cancel_operations(
00839 globus_xio_handle_t handle,
00840 int mask);
00841
00842 globus_result_t
00843 globus_xio_server_cancel_accept(
00844 globus_xio_server_t server);
00845
00866 globus_result_t
00867 globus_xio_register_close(
00868 globus_xio_handle_t handle,
00869 globus_xio_attr_t attr,
00870 globus_xio_callback_t cb,
00871 void * user_arg);
00872
00877 globus_result_t
00878 globus_xio_close(
00879 globus_xio_handle_t handle,
00880 globus_xio_attr_t attr);
00881
00882
00883
00884
00885
00886
00887
00888
00889
00890
00891
00892
00893
00894
00895
00896
00897
00898
00899
00900
00901
00902
00903
00904
00905
00906
00907
00908
00909
00910
00911
00912
00913
00914
00915
00916
00917
00918
00919
00920
00921
00922
00923
00924
00925
00926
00927
00928
00929
00930
00931
00932
00933
00934
00935
00936
00937
00938
00939
00940
00941
00942
00943
00944
00945
00946
00947
00948
00949
00950
00951
00952
00953
00954
00955
00956
00957
00958
00959
00960
00961
00962
00963
00964
00965
00966
00967
00968
00969
00970
00971
00972
00973
00974
00975
00976
00977
00978
00979
00980
00981
00982
00983
00984
00985
00986
00987
00988
00989
00990
00991
00992
00993
00994
00995
00996
00997
00998
00999
01000
01001
01002
01003
01004
01005 globus_xio_driver_list_ent_t *
01006 globus_xio_driver_list_find_driver(
01007 globus_list_t * driver_list,
01008 const char * driver_name);
01009
01010 void
01011 globus_xio_driver_list_destroy(
01012 globus_list_t * driver_list,
01013 globus_bool_t unload);
01014
01015 globus_result_t
01016 globus_xio_driver_list_to_stack_attr(
01017 globus_list_t * driver_list,
01018 globus_xio_stack_t stack,
01019 globus_xio_attr_t attr);
01020
01021 globus_result_t
01022 globus_xio_driver_list_from_string(
01023 char * driver_string,
01024 globus_list_t ** driver_list,
01025 globus_hashtable_t * safe_table);
01026
01027 globus_result_t
01028 globus_xio_driver_safe_table_from_string(
01029 char * driver_string,
01030 globus_hashtable_t * safe_table);
01031
01032 globus_result_t
01033 globus_xio_driver_list_create_ent(
01034 const char * driver_desc,
01035 globus_xio_driver_t driver_in,
01036 globus_bool_t load,
01037 globus_xio_driver_list_ent_t ** ent_out);
01038
01039 extern globus_module_descriptor_t globus_i_xio_module;
01040 #define GLOBUS_XIO_MODULE &globus_i_xio_module
01041
01042 #define _XIOSL(s) globus_common_i18n_get_string( \
01043 GLOBUS_XIO_MODULE, \
01044 s)
01045
01073 globus_result_t
01074 globus_xio_handle_create_from_url(
01075 globus_xio_handle_t * out_h,
01076 const char * scheme,
01077 globus_xio_attr_t attr,
01078 char * param_string);
01079
01080 #ifdef __cplusplus
01081 }
01082 #endif
01083
01084 #endif