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