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
00174
00175
00176
00177
00212 globus_result_t
00213 globus_xio_attr_init(
00214 globus_xio_attr_t * attr);
00215
00242 globus_result_t
00243 globus_xio_attr_cntl(
00244 globus_xio_attr_t attr,
00245 globus_xio_driver_t driver,
00246 int cmd,
00247 ...);
00248
00254 globus_result_t
00255 globus_xio_attr_copy(
00256 globus_xio_attr_t * dst,
00257 globus_xio_attr_t src);
00258
00268 globus_result_t
00269 globus_xio_attr_destroy(
00270 globus_xio_attr_t attr);
00271
00272
00273
00274
00275
00276
00281 globus_result_t
00282 globus_xio_stack_init(
00283 globus_xio_stack_t * stack,
00284 globus_xio_attr_t stack_attr);
00285
00294 globus_result_t
00295 globus_xio_stack_push_driver(
00296 globus_xio_stack_t stack,
00297 globus_xio_driver_t driver);
00298
00303 globus_result_t
00304 globus_xio_stack_copy(
00305 globus_xio_stack_t * dst,
00306 globus_xio_stack_t src);
00307
00312 globus_result_t
00313 globus_xio_stack_destroy(
00314 globus_xio_stack_t stack);
00315
00316
00317
00318
00341 typedef void
00342 (*globus_xio_accept_callback_t)(
00343 globus_xio_server_t server,
00344 globus_xio_handle_t handle,
00345 globus_result_t result,
00346 void * user_arg);
00347
00355 typedef void
00356 (*globus_xio_server_callback_t)(
00357 globus_xio_server_t server,
00358 void * user_arg);
00359
00378 globus_result_t
00379 globus_xio_server_create(
00380 globus_xio_server_t * server,
00381 globus_xio_attr_t server_attr,
00382 globus_xio_stack_t stack);
00383
00398 globus_result_t
00399 globus_xio_server_get_contact_string(
00400 globus_xio_server_t server,
00401 char ** contact_string);
00402
00410 globus_result_t
00411 globus_xio_server_register_close(
00412 globus_xio_server_t server,
00413 globus_xio_server_callback_t cb,
00414 void * user_arg);
00415
00420 globus_result_t
00421 globus_xio_server_close(
00422 globus_xio_server_t server);
00423
00432 globus_result_t
00433 globus_xio_server_cntl(
00434 globus_xio_server_t server,
00435 globus_xio_driver_t driver,
00436 int cmd,
00437 ...);
00438
00447 globus_result_t
00448 globus_xio_server_accept(
00449 globus_xio_handle_t * out_handle,
00450 globus_xio_server_t server);
00451
00459 globus_result_t
00460 globus_xio_server_register_accept(
00461 globus_xio_server_t server,
00462 globus_xio_accept_callback_t cb,
00463 void * user_arg);
00464
00473 globus_result_t
00474 globus_xio_handle_create(
00475 globus_xio_handle_t * handle,
00476 globus_xio_stack_t stack);
00477
00478
00479
00480
00481
00482
00483
00484
00485
00505 typedef globus_bool_t
00506 (*globus_xio_timeout_callback_t)(
00507 globus_xio_handle_t handle,
00508 globus_xio_operation_type_t type,
00509 void * user_arg);
00510
00511 typedef globus_bool_t
00512 (*globus_xio_timeout_server_callback_t)(
00513 globus_xio_server_t server,
00514 globus_xio_operation_type_t type);
00515
00516
00517
00518
00519
00520
00533 globus_result_t
00534 globus_xio_data_descriptor_init(
00535 globus_xio_data_descriptor_t * data_desc,
00536 globus_xio_handle_t handle);
00537
00542 globus_result_t
00543 globus_xio_data_descriptor_destroy(
00544 globus_xio_data_descriptor_t data_desc);
00545
00554 globus_result_t
00555 globus_xio_data_descriptor_cntl(
00556 globus_xio_data_descriptor_t data_desc,
00557 globus_xio_driver_t driver,
00558 int cmd,
00559 ...);
00560
00561
00562
00563
00571 typedef void (*globus_xio_callback_t)(
00572 globus_xio_handle_t handle,
00573 globus_result_t result,
00574 void * user_arg);
00575
00585 typedef void (*globus_xio_data_callback_t)(
00586 globus_xio_handle_t handle,
00587 globus_result_t result,
00588 globus_byte_t * buffer,
00589 globus_size_t len,
00590 globus_size_t nbytes,
00591 globus_xio_data_descriptor_t data_desc,
00592 void * user_arg);
00593
00603 typedef void (*globus_xio_iovec_callback_t)(
00604 globus_xio_handle_t handle,
00605 globus_result_t result,
00606 globus_xio_iovec_t * iovec,
00607 int count,
00608 globus_size_t nbytes,
00609 globus_xio_data_descriptor_t data_desc,
00610 void * user_arg);
00611
00624 globus_result_t
00625 globus_xio_handle_cntl(
00626 globus_xio_handle_t handle,
00627 globus_xio_driver_t driver,
00628 int cmd,
00629 ...);
00630
00691 globus_result_t
00692 globus_xio_register_open(
00693 globus_xio_handle_t handle,
00694 const char * contact_string,
00695 globus_xio_attr_t attr,
00696 globus_xio_callback_t cb,
00697 void * user_arg);
00698
00703 globus_result_t
00704 globus_xio_open(
00705 globus_xio_handle_t handle,
00706 const char * contact_string,
00707 globus_xio_attr_t attr);
00708
00713 globus_result_t
00714 globus_xio_register_read(
00715 globus_xio_handle_t handle,
00716 globus_byte_t * buffer,
00717 globus_size_t buffer_length,
00718 globus_size_t waitforbytes,
00719 globus_xio_data_descriptor_t data_desc,
00720 globus_xio_data_callback_t cb,
00721 void * user_arg);
00722
00727 globus_result_t
00728 globus_xio_read(
00729 globus_xio_handle_t handle,
00730 globus_byte_t * buffer,
00731 globus_size_t buffer_length,
00732 globus_size_t waitforbytes,
00733 globus_size_t * nbytes,
00734 globus_xio_data_descriptor_t data_desc);
00735
00740 globus_result_t
00741 globus_xio_register_readv(
00742 globus_xio_handle_t handle,
00743 globus_xio_iovec_t * iovec,
00744 int iovec_count,
00745 globus_size_t waitforbytes,
00746 globus_xio_data_descriptor_t data_desc,
00747 globus_xio_iovec_callback_t cb,
00748 void * user_arg);
00749
00754 globus_result_t
00755 globus_xio_readv(
00756 globus_xio_handle_t handle,
00757 globus_xio_iovec_t * iovec,
00758 int iovec_count,
00759 globus_size_t waitforbytes,
00760 globus_size_t * nbytes,
00761 globus_xio_data_descriptor_t data_desc);
00762
00767 globus_result_t
00768 globus_xio_register_write(
00769 globus_xio_handle_t handle,
00770 globus_byte_t * buffer,
00771 globus_size_t buffer_length,
00772 globus_size_t waitforbytes,
00773 globus_xio_data_descriptor_t data_desc,
00774 globus_xio_data_callback_t cb,
00775 void * user_arg);
00776
00781 globus_result_t
00782 globus_xio_write(
00783 globus_xio_handle_t handle,
00784 globus_byte_t * buffer,
00785 globus_size_t buffer_length,
00786 globus_size_t waitforbytes,
00787 globus_size_t * nbytes,
00788 globus_xio_data_descriptor_t data_desc);
00789
00794 globus_result_t
00795 globus_xio_register_writev(
00796 globus_xio_handle_t handle,
00797 globus_xio_iovec_t * iovec,
00798 int iovec_count,
00799 globus_size_t waitforbytes,
00800 globus_xio_data_descriptor_t data_desc,
00801 globus_xio_iovec_callback_t cb,
00802 void * user_arg);
00803
00808 globus_result_t
00809 globus_xio_writev(
00810 globus_xio_handle_t handle,
00811 globus_xio_iovec_t * iovec,
00812 int iovec_count,
00813 globus_size_t waitforbytes,
00814 globus_size_t * nbytes,
00815 globus_xio_data_descriptor_t data_desc);
00816
00817
00821 globus_result_t
00822 globus_xio_handle_cancel_operations(
00823 globus_xio_handle_t handle,
00824 int mask);
00825
00826 globus_result_t
00827 globus_xio_server_cancel_accept(
00828 globus_xio_server_t server);
00829
00850 globus_result_t
00851 globus_xio_register_close(
00852 globus_xio_handle_t handle,
00853 globus_xio_attr_t attr,
00854 globus_xio_callback_t cb,
00855 void * user_arg);
00856
00861 globus_result_t
00862 globus_xio_close(
00863 globus_xio_handle_t handle,
00864 globus_xio_attr_t attr);
00865
00866
00867
00868
00869
00870
00871
00872
00873
00874
00875
00876
00877
00878
00879
00880
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 globus_xio_driver_list_ent_t *
00990 globus_xio_driver_list_find_driver(
00991 globus_list_t * driver_list,
00992 const char * driver_name);
00993
00994 void
00995 globus_xio_driver_list_destroy(
00996 globus_list_t * driver_list,
00997 globus_bool_t unload);
00998
00999 globus_result_t
01000 globus_xio_driver_list_to_stack_attr(
01001 globus_list_t * driver_list,
01002 globus_xio_stack_t stack,
01003 globus_xio_attr_t attr);
01004
01005 globus_result_t
01006 globus_xio_driver_list_from_string(
01007 char * driver_string,
01008 globus_list_t ** driver_list,
01009 globus_hashtable_t * safe_table);
01010
01011 globus_result_t
01012 globus_xio_driver_safe_table_from_string(
01013 char * driver_string,
01014 globus_hashtable_t * safe_table);
01015
01016 globus_result_t
01017 globus_xio_driver_list_create_ent(
01018 const char * driver_desc,
01019 globus_xio_driver_t driver_in,
01020 globus_bool_t load,
01021 globus_xio_driver_list_ent_t ** ent_out);
01022
01023 extern globus_module_descriptor_t globus_i_xio_module;
01024 #define GLOBUS_XIO_MODULE &globus_i_xio_module
01025
01026 #define _XIOSL(s) globus_common_i18n_get_string( \
01027 GLOBUS_XIO_MODULE, \
01028 s)
01029
01057 globus_result_t
01058 globus_xio_handle_create_from_url(
01059 globus_xio_handle_t * out_h,
01060 const char * scheme,
01061 globus_xio_attr_t attr,
01062 char * param_string);
01063
01064 #ifdef __cplusplus
01065 }
01066 #endif
01067
01068 #endif