00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef GLOBUS_FTP_CLIENT_H
00018 #define GLOBUS_FTP_CLIENT_H
00019
00025 #ifndef GLOBUS_GLOBAL_DOCUMENT_SET
00026
00030 #endif
00031
00078 #include "globus_ftp_control.h"
00079 #include "globus_priority_q.h"
00080
00081 #ifdef __cplusplus
00082 extern "C" {
00083 #endif
00084
00113 #define GLOBUS_FTP_CLIENT_MODULE (&globus_i_ftp_client_module)
00114
00115 extern globus_module_descriptor_t globus_i_ftp_client_module;
00116
00120 typedef enum
00121 {
00122 GLOBUS_FTP_CLIENT_ERROR_PARAMETER,
00123 GLOBUS_FTP_CLIENT_ERROR_MEMORY,
00124 GLOBUS_FTP_CLIENT_ERROR_ABORTED,
00125 GLOBUS_FTP_CLIENT_ERROR_INTERNAL,
00126 GLOBUS_FTP_CLIENT_ERROR_IN_USE,
00127 GLOBUS_FTP_CLIENT_ERROR_NOT_IN_USE,
00128 GLOBUS_FTP_CLIENT_ERROR_COMPLETED,
00129 GLOBUS_FTP_CLIENT_ERROR_INVALID_OPERATION,
00130 GLOBUS_FTP_CLIENT_ERROR_UNEXPECTED_EOF,
00131 GLOBUS_FTP_CLIENT_ERROR_NO_SUCH_FILE,
00132 GLOBUS_FTP_CLIENT_ERROR_PROTOCOL,
00133 GLOBUS_FTP_CLIENT_ERROR_RESPONSE,
00134 GLOBUS_FTP_CLIENT_ERROR_FEATURE,
00135 GLOBUS_FTP_CLIENT_ERROR_NO_RESTART_MARKER
00136 } globus_ftp_client_error_t;
00137
00146 typedef enum
00147 {
00148 GLOBUS_FTP_CLIENT_RESTART_NONE,
00149 GLOBUS_FTP_CLIENT_RESTART_STREAM,
00150 GLOBUS_FTP_CLIENT_RESTART_EXTENDED_BLOCK
00151 }
00152 globus_ftp_client_restart_type_t;
00153
00165 typedef struct
00166 {
00171 globus_ftp_client_restart_type_t type;
00176 globus_off_t offset;
00181 globus_off_t ascii_offset;
00182 }
00183 globus_ftp_client_restart_stream_t;
00184
00196 typedef struct
00197 {
00202 globus_ftp_client_restart_type_t type;
00207 globus_fifo_t ranges;
00208 }
00209 globus_ftp_client_restart_extended_block_t;
00210
00224 typedef union
00225 {
00226 globus_ftp_client_restart_type_t type;
00227 globus_ftp_client_restart_stream_t stream;
00228 globus_ftp_client_restart_extended_block_t extended_block;
00229 }
00230 globus_ftp_client_restart_marker_t;
00231
00246 typedef struct globus_i_ftp_client_handle_t * globus_ftp_client_handle_t;
00247
00261 typedef struct globus_i_ftp_client_plugin_t * globus_ftp_client_plugin_t;
00262
00282 typedef void (*globus_ftp_client_complete_callback_t) (
00283 void * user_arg,
00284 globus_ftp_client_handle_t * handle,
00285 globus_object_t * error);
00286
00315 typedef void (*globus_ftp_client_data_callback_t) (
00316 void * user_arg,
00317 globus_ftp_client_handle_t * handle,
00318 globus_object_t * error,
00319 globus_byte_t * buffer,
00320 globus_size_t length,
00321 globus_off_t offset,
00322 globus_bool_t eof);
00323
00337 typedef struct globus_i_ftp_client_operationattr_t *
00338 globus_ftp_client_operationattr_t;
00339
00350 typedef struct
00351 globus_i_ftp_client_handleattr_t * globus_ftp_client_handleattr_t;
00366 #ifndef DOXYGEN
00367 globus_result_t
00368 globus_ftp_client_restart_marker_init(
00369 globus_ftp_client_restart_marker_t * marker);
00370
00371 globus_result_t
00372 globus_ftp_client_restart_marker_destroy(
00373 globus_ftp_client_restart_marker_t * marker);
00374
00375 globus_result_t
00376 globus_ftp_client_restart_marker_copy(
00377 globus_ftp_client_restart_marker_t * new_marker,
00378 globus_ftp_client_restart_marker_t * marker);
00379
00380 globus_result_t
00381 globus_ftp_client_restart_marker_insert_range(
00382 globus_ftp_client_restart_marker_t * marker,
00383 globus_off_t offset,
00384 globus_off_t end_offset);
00385
00386 globus_result_t
00387 globus_ftp_client_restart_marker_set_offset(
00388 globus_ftp_client_restart_marker_t * marker,
00389 globus_off_t offset);
00390
00391 globus_result_t
00392 globus_ftp_client_restart_marker_set_ascii_offset(
00393 globus_ftp_client_restart_marker_t * marker,
00394 globus_off_t offset,
00395 globus_off_t ascii_offset);
00396
00397 globus_result_t
00398 globus_ftp_client_restart_marker_get_total(
00399 globus_ftp_client_restart_marker_t * marker,
00400 globus_off_t * total_bytes);
00401
00402 globus_result_t
00403 globus_ftp_client_restart_marker_get_first_block(
00404 globus_ftp_client_restart_marker_t * marker,
00405 globus_off_t * offset,
00406 globus_off_t * end_offset);
00407
00408 globus_result_t
00409 globus_ftp_client_restart_marker_to_string(
00410 globus_ftp_client_restart_marker_t * marker,
00411 char ** marker_string);
00412
00413 globus_result_t
00414 globus_ftp_client_restart_marker_from_string(
00415 globus_ftp_client_restart_marker_t * marker,
00416 const char * marker_string);
00417 #endif
00418
00434 #ifndef DOXYGEN
00435 globus_result_t
00436 globus_ftp_client_handle_init(
00437 globus_ftp_client_handle_t * handle,
00438 globus_ftp_client_handleattr_t* attr);
00439
00440 globus_result_t
00441 globus_ftp_client_handle_destroy(
00442 globus_ftp_client_handle_t * handle);
00443
00444 globus_result_t
00445 globus_ftp_client_handle_borrow_connection(
00446 globus_ftp_client_handle_t * from_handle,
00447 globus_bool_t from_is_source,
00448 globus_ftp_client_handle_t * to_handle,
00449 globus_bool_t to_is_source);
00450
00451 globus_result_t
00452 globus_ftp_client_handle_cache_url_state(
00453 globus_ftp_client_handle_t * handle,
00454 const char * url);
00455
00456 globus_result_t
00457 globus_ftp_client_handle_flush_url_state(
00458 globus_ftp_client_handle_t * handle,
00459 const char * url);
00460
00461 globus_result_t
00462 globus_ftp_client_handle_set_user_pointer(
00463 globus_ftp_client_handle_t * handle,
00464 void * user_pointer);
00465
00466 globus_result_t
00467 globus_ftp_client_handle_get_user_pointer(
00468 const globus_ftp_client_handle_t * handle,
00469 void ** user_pointer);
00470
00471 globus_result_t
00472 globus_ftp_client_handle_get_restart_marker(
00473 const globus_ftp_client_handle_t * handle,
00474 globus_ftp_client_restart_marker_t * marker);
00475
00476 globus_result_t
00477 globus_ftp_client_handle_add_plugin(
00478 globus_ftp_client_handle_t * handle,
00479 globus_ftp_client_plugin_t * plugin);
00480
00481 globus_result_t
00482 globus_ftp_client_handle_remove_plugin(
00483 globus_ftp_client_handle_t * handle,
00484 globus_ftp_client_plugin_t * plugin);
00485
00486 #endif
00487
00502 #ifndef DOXYGEN
00503 globus_result_t
00504 globus_ftp_client_handleattr_init(
00505 globus_ftp_client_handleattr_t * attr);
00506
00507 globus_result_t
00508 globus_ftp_client_handleattr_destroy(
00509 globus_ftp_client_handleattr_t * attr);
00510
00511 globus_result_t
00512 globus_ftp_client_handleattr_copy(
00513 globus_ftp_client_handleattr_t * dest,
00514 globus_ftp_client_handleattr_t * src);
00515
00516 globus_result_t
00517 globus_ftp_client_handleattr_add_cached_url(
00518 globus_ftp_client_handleattr_t * attr,
00519 const char * url);
00520
00521 globus_result_t
00522 globus_ftp_client_handleattr_remove_cached_url(
00523 globus_ftp_client_handleattr_t * attr,
00524 const char * url);
00525
00526 globus_result_t
00527 globus_ftp_client_handleattr_set_cache_all(
00528 globus_ftp_client_handleattr_t * attr,
00529 globus_bool_t cache_all);
00530
00531 globus_result_t
00532 globus_ftp_client_handleattr_get_cache_all(
00533 const globus_ftp_client_handleattr_t * attr,
00534 globus_bool_t * cache_all);
00535
00536 globus_result_t
00537 globus_ftp_client_handleattr_set_rfc1738_url(
00538 globus_ftp_client_handleattr_t * attr,
00539 globus_bool_t rfc1738_url);
00540
00541 globus_result_t
00542 globus_ftp_client_handleattr_get_rfc1738_url(
00543 const globus_ftp_client_handleattr_t * attr,
00544 globus_bool_t * rfc1738_url);
00545
00546 typedef void (*globus_ftp_client_pipeline_callback_t)(
00547 globus_ftp_client_handle_t * handle,
00548 char ** source_url,
00549 char ** dest_url,
00550 void * user_arg);
00551
00552 globus_result_t
00553 globus_ftp_client_handleattr_set_pipeline(
00554 globus_ftp_client_handleattr_t * attr,
00555 globus_size_t outstanding_commands,
00556 globus_ftp_client_pipeline_callback_t pipeline_callback,
00557 void * pipeline_arg);
00558
00559 globus_result_t
00560 globus_ftp_client_handleattr_get_pipeline(
00561 const globus_ftp_client_handleattr_t * attr,
00562 globus_size_t * outstanding_commands,
00563 globus_ftp_client_pipeline_callback_t * pipeline_callback,
00564 void ** pipeline_arg);
00565
00566 globus_result_t
00567 globus_ftp_client_handleattr_set_gridftp2(
00568 globus_ftp_client_handleattr_t * attr,
00569 globus_bool_t gridftp2);
00570
00571 globus_result_t
00572 globus_ftp_client_handleattr_get_gridftp2(
00573 const globus_ftp_client_handleattr_t * attr,
00574 globus_bool_t * gridftp2);
00575
00576 globus_result_t
00577 globus_ftp_client_handleattr_set_netlogger(
00578 globus_ftp_client_handleattr_t * attr,
00579 globus_netlogger_handle_t * nl_handle);
00580
00581 globus_result_t
00582 globus_ftp_client_handleattr_set_clientinfo(
00583 globus_ftp_client_handleattr_t * attr,
00584 const char * app_name,
00585 const char * app_version,
00586 const char * other);
00587
00588 globus_result_t
00589 globus_ftp_client_handleattr_get_clientinfo(
00590 globus_ftp_client_handleattr_t * attr,
00591 char ** app_name,
00592 char ** app_version,
00593 char ** other);
00594
00595 globus_result_t
00596 globus_ftp_client_handleattr_set_netlogger_ftp_io(
00597 globus_ftp_client_handleattr_t * attr,
00598 globus_netlogger_handle_t * nl_handle,
00599 globus_bool_t ftp,
00600 globus_bool_t io);
00601
00602 globus_result_t
00603 globus_ftp_client_handleattr_remove_plugin(
00604 globus_ftp_client_handleattr_t * attr,
00605 globus_ftp_client_plugin_t * plugin);
00606
00607 globus_result_t
00608 globus_ftp_client_handleattr_add_plugin(
00609 globus_ftp_client_handleattr_t * attr,
00610 globus_ftp_client_plugin_t * plugin);
00611 #endif
00612
00623 #ifndef DOXYGEN
00624
00625 globus_result_t
00626 globus_ftp_client_chmod(
00627 globus_ftp_client_handle_t * u_handle,
00628 const char * url,
00629 int mode,
00630 globus_ftp_client_operationattr_t * attr,
00631 globus_ftp_client_complete_callback_t complete_callback,
00632 void * callback_arg);
00633
00634 globus_result_t
00635 globus_ftp_client_chgrp(
00636 globus_ftp_client_handle_t * u_handle,
00637 const char * url,
00638 const char * group,
00639 globus_ftp_client_operationattr_t * attr,
00640 globus_ftp_client_complete_callback_t complete_callback,
00641 void * callback_arg);
00642
00643 globus_result_t
00644 globus_ftp_client_utime(
00645 globus_ftp_client_handle_t * u_handle,
00646 const char * url,
00647 const struct tm * utime_time,
00648 globus_ftp_client_operationattr_t * attr,
00649 globus_ftp_client_complete_callback_t complete_callback,
00650 void * callback_arg);
00651
00652 globus_result_t
00653 globus_ftp_client_symlink(
00654 globus_ftp_client_handle_t * u_handle,
00655 const char * url,
00656 const char * link_url,
00657 globus_ftp_client_operationattr_t * attr,
00658 globus_ftp_client_complete_callback_t complete_callback,
00659 void * callback_arg);
00660
00661 globus_result_t
00662 globus_ftp_client_cksm(
00663 globus_ftp_client_handle_t * handle,
00664 const char * url,
00665 globus_ftp_client_operationattr_t * attr,
00666 char * cksm,
00667 globus_off_t offset,
00668 globus_off_t length,
00669 const char * algorithm,
00670 globus_ftp_client_complete_callback_t complete_callback,
00671 void * callback_arg);
00672
00673 globus_result_t
00674 globus_ftp_client_delete(
00675 globus_ftp_client_handle_t * handle,
00676 const char * url,
00677 globus_ftp_client_operationattr_t * attr,
00678 globus_ftp_client_complete_callback_t complete_callback,
00679 void * callback_arg);
00680
00681 globus_result_t
00682 globus_ftp_client_mkdir(
00683 globus_ftp_client_handle_t * handle,
00684 const char * url,
00685 globus_ftp_client_operationattr_t * attr,
00686 globus_ftp_client_complete_callback_t complete_callback,
00687 void * callback_arg);
00688
00689 globus_result_t
00690 globus_ftp_client_rmdir(
00691 globus_ftp_client_handle_t * handle,
00692 const char * url,
00693 globus_ftp_client_operationattr_t * attr,
00694 globus_ftp_client_complete_callback_t complete_callback,
00695 void * callback_arg);
00696
00697 globus_result_t
00698 globus_ftp_client_list(
00699 globus_ftp_client_handle_t * handle,
00700 const char * url,
00701 globus_ftp_client_operationattr_t * attr,
00702 globus_ftp_client_complete_callback_t complete_callback,
00703 void * callback_arg);
00704
00705 globus_result_t
00706 globus_ftp_client_verbose_list(
00707 globus_ftp_client_handle_t * handle,
00708 const char * url,
00709 globus_ftp_client_operationattr_t * attr,
00710 globus_ftp_client_complete_callback_t complete_callback,
00711 void * callback_arg);
00712
00713 globus_result_t
00714 globus_ftp_client_machine_list(
00715 globus_ftp_client_handle_t * handle,
00716 const char * url,
00717 globus_ftp_client_operationattr_t * attr,
00718 globus_ftp_client_complete_callback_t complete_callback,
00719 void * callback_arg);
00720
00721 globus_result_t
00722 globus_ftp_client_recursive_list(
00723 globus_ftp_client_handle_t * handle,
00724 const char * url,
00725 globus_ftp_client_operationattr_t * attr,
00726 globus_ftp_client_complete_callback_t complete_callback,
00727 void * callback_arg);
00728
00729 globus_result_t
00730 globus_ftp_client_mlst(
00731 globus_ftp_client_handle_t * u_handle,
00732 const char * url,
00733 globus_ftp_client_operationattr_t * attr,
00734 globus_byte_t ** mlst_buffer,
00735 globus_size_t * mlst_buffer_length,
00736 globus_ftp_client_complete_callback_t complete_callback,
00737 void * callback_arg);
00738
00739 globus_result_t
00740 globus_ftp_client_cwd(
00741 globus_ftp_client_handle_t * u_handle,
00742 const char * url,
00743 globus_ftp_client_operationattr_t * attr,
00744 globus_byte_t ** cwd_buffer,
00745 globus_size_t * cwd_buffer_length,
00746 globus_ftp_client_complete_callback_t complete_callback,
00747 void * callback_arg);
00748
00749 globus_result_t
00750 globus_ftp_client_stat(
00751 globus_ftp_client_handle_t * u_handle,
00752 const char * url,
00753 globus_ftp_client_operationattr_t * attr,
00754 globus_byte_t ** stat_buffer,
00755 globus_size_t * stat_buffer_length,
00756 globus_ftp_client_complete_callback_t complete_callback,
00757 void * callback_arg);
00758
00759 globus_result_t
00760 globus_ftp_client_move(
00761 globus_ftp_client_handle_t * handle,
00762 const char * source_url,
00763 const char * dest_url,
00764 globus_ftp_client_operationattr_t * attr,
00765 globus_ftp_client_complete_callback_t complete_callback,
00766 void * callback_arg);
00767
00768 globus_result_t
00769 globus_ftp_client_get(
00770 globus_ftp_client_handle_t * handle,
00771 const char * url,
00772 globus_ftp_client_operationattr_t * attr,
00773 globus_ftp_client_restart_marker_t * restart,
00774 globus_ftp_client_complete_callback_t complete_callback,
00775 void * callback_arg);
00776
00777 globus_result_t
00778 globus_ftp_client_put(
00779 globus_ftp_client_handle_t * handle,
00780 const char * url,
00781 globus_ftp_client_operationattr_t * attr,
00782 globus_ftp_client_restart_marker_t * restart,
00783 globus_ftp_client_complete_callback_t complete_callback,
00784 void * callback_arg);
00785
00786 globus_result_t
00787 globus_ftp_client_third_party_transfer(
00788 globus_ftp_client_handle_t * handle,
00789 const char * source_url,
00790 globus_ftp_client_operationattr_t * source_attr,
00791 const char * dest_url,
00792 globus_ftp_client_operationattr_t * dest_attr,
00793 globus_ftp_client_restart_marker_t * restart,
00794 globus_ftp_client_complete_callback_t complete_callback,
00795 void * callback_arg);
00796
00797 globus_result_t
00798 globus_ftp_client_partial_get(
00799 globus_ftp_client_handle_t * handle,
00800 const char * url,
00801 globus_ftp_client_operationattr_t * attr,
00802 globus_ftp_client_restart_marker_t * restart,
00803 globus_off_t partial_offset,
00804 globus_off_t partial_end_offset,
00805 globus_ftp_client_complete_callback_t complete_callback,
00806 void * callback_arg);
00807
00808 globus_result_t
00809 globus_ftp_client_partial_put(
00810 globus_ftp_client_handle_t * handle,
00811 const char * url,
00812 globus_ftp_client_operationattr_t * attr,
00813 globus_ftp_client_restart_marker_t * restart,
00814 globus_off_t partial_offset,
00815 globus_off_t partial_end_offset,
00816 globus_ftp_client_complete_callback_t complete_callback,
00817 void * callback_arg);
00818
00819 globus_result_t
00820 globus_ftp_client_partial_third_party_transfer(
00821 globus_ftp_client_handle_t * handle,
00822 const char * source_url,
00823 globus_ftp_client_operationattr_t * source_attr,
00824 const char * dest_url,
00825 globus_ftp_client_operationattr_t * dest_attr,
00826 globus_ftp_client_restart_marker_t * restart,
00827 globus_off_t partial_offset,
00828 globus_off_t partial_end_offset,
00829 globus_ftp_client_complete_callback_t complete_callback,
00830 void * callback_arg);
00831
00832 globus_result_t
00833 globus_ftp_client_extended_get(
00834 globus_ftp_client_handle_t * handle,
00835 const char * url,
00836 globus_ftp_client_operationattr_t * attr,
00837 globus_ftp_client_restart_marker_t * restart,
00838 const char * eret_alg_str,
00839 globus_ftp_client_complete_callback_t complete_callback,
00840 void * callback_arg);
00841
00842 globus_result_t
00843 globus_ftp_client_extended_put(
00844 globus_ftp_client_handle_t * handle,
00845 const char * url,
00846 globus_ftp_client_operationattr_t * attr,
00847 globus_ftp_client_restart_marker_t * restart,
00848 const char * esto_alg_str,
00849 globus_ftp_client_complete_callback_t complete_callback,
00850 void * callback_arg);
00851
00852 globus_result_t
00853 globus_ftp_client_extended_third_party_transfer(
00854 globus_ftp_client_handle_t * handle,
00855 const char * source_url,
00856 globus_ftp_client_operationattr_t * source_attr,
00857 const char * eret_alg_str,
00858 const char * dest_url,
00859 globus_ftp_client_operationattr_t * dest_attr,
00860 const char * esto_alg_str,
00861 globus_ftp_client_restart_marker_t * restart,
00862 globus_ftp_client_complete_callback_t complete_callback,
00863 void * callback_arg);
00864
00865 globus_result_t
00866 globus_ftp_client_abort(
00867 globus_ftp_client_handle_t * handle);
00868
00869 globus_result_t
00870 globus_ftp_client_modification_time(
00871 globus_ftp_client_handle_t * handle,
00872 const char * url,
00873 globus_ftp_client_operationattr_t * attr,
00874 globus_abstime_t * modification_time,
00875 globus_ftp_client_complete_callback_t complete_callback,
00876 void * callback_arg);
00877
00878 globus_result_t
00879 globus_ftp_client_size(
00880 globus_ftp_client_handle_t * handle,
00881 const char * url,
00882 globus_ftp_client_operationattr_t * attr,
00883 globus_off_t * size,
00884 globus_ftp_client_complete_callback_t complete_callback,
00885 void * callback_arg);
00886
00887 globus_result_t
00888 globus_ftp_client_exists(
00889 globus_ftp_client_handle_t * handle,
00890 const char * url,
00891 globus_ftp_client_operationattr_t * attr,
00892 globus_ftp_client_complete_callback_t complete_callback,
00893 void * callback_arg);
00894 #endif
00895
00905 #ifndef DOXYGEN
00906 globus_result_t
00907 globus_ftp_client_operationattr_init(
00908 globus_ftp_client_operationattr_t * attr);
00909
00910 globus_result_t
00911 globus_ftp_client_operationattr_destroy(
00912 globus_ftp_client_operationattr_t * attr);
00913
00914 globus_result_t
00915 globus_ftp_client_operationattr_set_parallelism(
00916 globus_ftp_client_operationattr_t * attr,
00917 const globus_ftp_control_parallelism_t * parallelism);
00918
00919 globus_result_t
00920 globus_ftp_client_operationattr_get_parallelism(
00921 const globus_ftp_client_operationattr_t * attr,
00922 globus_ftp_control_parallelism_t * parallelism);
00923
00924 globus_result_t
00925 globus_ftp_client_operationattr_set_storage_module(
00926 globus_ftp_client_operationattr_t * attr,
00927 const char * module_name,
00928 const char * module_args);
00929
00930 globus_result_t
00931 globus_ftp_client_operationattr_get_storage_module(
00932 const globus_ftp_client_operationattr_t * attr,
00933 char ** module_name,
00934 char ** module_args);
00935
00936 globus_result_t
00937 globus_ftp_client_operationattr_set_net_stack(
00938 globus_ftp_client_operationattr_t * attr,
00939 const char * driver_list);
00940
00941 globus_result_t
00942 globus_ftp_client_operationattr_get_net_stack(
00943 const globus_ftp_client_operationattr_t * attr,
00944 char ** driver_list);
00945
00946 globus_result_t
00947 globus_ftp_client_operationattr_set_disk_stack(
00948 globus_ftp_client_operationattr_t * attr,
00949 const char * driver_list);
00950
00951 globus_result_t
00952 globus_ftp_client_operationattr_get_disk_stack(
00953 const globus_ftp_client_operationattr_t * attr,
00954 char ** driver_list);
00955
00956 globus_result_t
00957 globus_ftp_client_operationattr_set_authz_assert(
00958 globus_ftp_client_operationattr_t * attr,
00959 const char * authz_assert,
00960 globus_bool_t cache_authz_assert);
00961
00962 globus_result_t
00963 globus_ftp_client_operationattr_get_authz_assert(
00964 const globus_ftp_client_operationattr_t * attr,
00965 char ** authz_assert,
00966 globus_bool_t * cache_authz_assert);
00967
00968 globus_result_t
00969 globus_ftp_client_operationattr_set_striped(
00970 globus_ftp_client_operationattr_t * attr,
00971 globus_bool_t striped);
00972
00973 globus_result_t
00974 globus_ftp_client_operationattr_get_striped(
00975 const globus_ftp_client_operationattr_t * attr,
00976 globus_bool_t * striped);
00977
00978 globus_result_t
00979 globus_ftp_client_operationattr_set_layout(
00980 globus_ftp_client_operationattr_t * attr,
00981 const globus_ftp_control_layout_t * layout);
00982
00983 globus_result_t
00984 globus_ftp_client_operationattr_get_layout(
00985 const globus_ftp_client_operationattr_t * attr,
00986 globus_ftp_control_layout_t * layout);
00987
00988 globus_result_t
00989 globus_ftp_client_operationattr_set_tcp_buffer(
00990 globus_ftp_client_operationattr_t * attr,
00991 const globus_ftp_control_tcpbuffer_t * tcp_buffer);
00992
00993 globus_result_t
00994 globus_ftp_client_operationattr_get_tcp_buffer(
00995 const globus_ftp_client_operationattr_t * attr,
00996 globus_ftp_control_tcpbuffer_t * tcp_buffer);
00997
00998 globus_result_t
00999 globus_ftp_client_operationattr_set_type(
01000 globus_ftp_client_operationattr_t * attr,
01001 globus_ftp_control_type_t type);
01002
01003 globus_result_t
01004 globus_ftp_client_operationattr_get_type(
01005 const globus_ftp_client_operationattr_t * attr,
01006 globus_ftp_control_type_t * type);
01007
01008 globus_result_t
01009 globus_ftp_client_operationattr_set_mode(
01010 globus_ftp_client_operationattr_t * attr,
01011 globus_ftp_control_mode_t mode);
01012
01013 globus_result_t
01014 globus_ftp_client_operationattr_get_mode(
01015 const globus_ftp_client_operationattr_t * attr,
01016 globus_ftp_control_mode_t * mode);
01017
01018 globus_result_t
01019 globus_ftp_client_operationattr_set_list_uses_data_mode(
01020 const globus_ftp_client_operationattr_t * attr,
01021 globus_bool_t list_uses_data_mode);
01022
01023 globus_result_t
01024 globus_ftp_client_operationattr_get_list_uses_data_mode(
01025 const globus_ftp_client_operationattr_t * attr,
01026 globus_bool_t * list_uses_data_mode);
01027
01028 globus_result_t
01029 globus_ftp_client_operationattr_set_delayed_pasv(
01030 const globus_ftp_client_operationattr_t * attr,
01031 globus_bool_t delayed_pasv);
01032
01033 globus_result_t
01034 globus_ftp_client_operationattr_get_delayed_pasv(
01035 const globus_ftp_client_operationattr_t * attr,
01036 globus_bool_t * delayed_pasv);
01037
01038 globus_result_t
01039 globus_ftp_client_operationattr_set_dcau(
01040 globus_ftp_client_operationattr_t * attr,
01041 const globus_ftp_control_dcau_t * dcau);
01042
01043 globus_result_t
01044 globus_ftp_client_operationattr_get_dcau(
01045 const globus_ftp_client_operationattr_t * attr,
01046 globus_ftp_control_dcau_t * dcau);
01047
01048 globus_result_t
01049 globus_ftp_client_operationattr_set_data_protection(
01050 globus_ftp_client_operationattr_t * attr,
01051 globus_ftp_control_protection_t protection);
01052
01053 globus_result_t
01054 globus_ftp_client_operationattr_get_data_protection(
01055 const globus_ftp_client_operationattr_t * attr,
01056 globus_ftp_control_protection_t * protection);
01057
01058 globus_result_t
01059 globus_ftp_client_operationattr_set_control_protection(
01060 globus_ftp_client_operationattr_t * attr,
01061 globus_ftp_control_protection_t protection);
01062
01063 globus_result_t
01064 globus_ftp_client_operationattr_get_control_protection(
01065 const globus_ftp_client_operationattr_t * attr,
01066 globus_ftp_control_protection_t * protection);
01067
01068 globus_result_t
01069 globus_ftp_client_operationattr_set_data_security(
01070 globus_ftp_client_operationattr_t * attr,
01071 int type,
01072 void * credential);
01073
01074 globus_result_t
01075 globus_ftp_client_operationattr_get_data_security(
01076 const globus_ftp_client_operationattr_t * attr,
01077 int * type,
01078 void ** credential);
01079
01080 globus_result_t
01081 globus_ftp_client_operationattr_set_resume_third_party_transfer(
01082 globus_ftp_client_operationattr_t * attr,
01083 globus_bool_t resume);
01084
01085 globus_result_t
01086 globus_ftp_client_operationattr_get_resume_third_party_transfer(
01087 const globus_ftp_client_operationattr_t * attr,
01088 globus_bool_t * resume);
01089
01090 globus_result_t
01091 globus_ftp_client_operationattr_set_authorization(
01092 globus_ftp_client_operationattr_t * attr,
01093 gss_cred_id_t credential,
01094 const char * user,
01095 const char * password,
01096 const char * account,
01097 const char * subject);
01098
01099 globus_result_t
01100 globus_ftp_client_operationattr_get_authorization(
01101 const globus_ftp_client_operationattr_t * attr,
01102 gss_cred_id_t * credential,
01103 char ** user,
01104 char ** password,
01105 char ** account,
01106 char ** subject);
01107
01108 globus_result_t
01109 globus_ftp_client_operationattr_set_append(
01110 globus_ftp_client_operationattr_t * attr,
01111 globus_bool_t append);
01112
01113 globus_result_t
01114 globus_ftp_client_operationattr_get_append(
01115 const globus_ftp_client_operationattr_t * attr,
01116 globus_bool_t * append);
01117
01118 globus_result_t
01119 globus_ftp_client_operationattr_set_read_all(
01120 globus_ftp_client_operationattr_t * attr,
01121 globus_bool_t read_all,
01122 globus_ftp_client_data_callback_t intermediate_callbacks,
01123 void * intermediate_callback_arg);
01124
01125 globus_result_t
01126 globus_ftp_client_operationattr_get_read_all(
01127 const globus_ftp_client_operationattr_t * attr,
01128 globus_bool_t * read_all,
01129 globus_ftp_client_data_callback_t * intermediate_callbacks,
01130 void ** intermediate_callback_arg);
01131
01132 globus_result_t
01133 globus_ftp_client_operationattr_set_allow_ipv6(
01134 globus_ftp_client_operationattr_t * attr,
01135 globus_bool_t allow);
01136
01137 globus_result_t
01138 globus_ftp_client_operationattr_get_allow_ipv6(
01139 const globus_ftp_client_operationattr_t * attr,
01140 globus_bool_t * allow);
01141
01142 globus_result_t
01143 globus_ftp_client_operationattr_set_allocate(
01144 globus_ftp_client_operationattr_t * attr,
01145 const globus_off_t allocated_size);
01146
01147 globus_result_t
01148 globus_ftp_client_operationattr_get_allocate(
01149 const globus_ftp_client_operationattr_t * attr,
01150 globus_off_t * allocated_size);
01151
01152 globus_result_t
01153 globus_ftp_client_operationattr_copy(
01154 globus_ftp_client_operationattr_t * dst,
01155 const globus_ftp_client_operationattr_t * src);
01156
01157 globus_result_t
01158 globus_ftp_client_operationattr_set_rfc1738_url(
01159 globus_ftp_client_operationattr_t * attr,
01160 globus_bool_t rfc1738_url);
01161
01162 globus_result_t
01163 globus_ftp_client_operationattr_get_rfc1738_url(
01164 const globus_ftp_client_operationattr_t * attr,
01165 globus_bool_t * rfc1738_url);
01166 #endif
01167
01190 #ifndef DOXYGEN
01191 globus_result_t
01192 globus_ftp_client_register_read(
01193 globus_ftp_client_handle_t * handle,
01194 globus_byte_t * buffer,
01195 globus_size_t buffer_length,
01196 globus_ftp_client_data_callback_t callback,
01197 void * callback_arg);
01198
01199 globus_result_t
01200 globus_ftp_client_register_write(
01201 globus_ftp_client_handle_t * handle,
01202 globus_byte_t * buffer,
01203 globus_size_t buffer_length,
01204 globus_off_t offset,
01205 globus_bool_t eof,
01206 globus_ftp_client_data_callback_t callback,
01207 void * callback_arg);
01208 #endif
01209
01216 typedef enum
01217 {
01218 GLOBUS_FTP_CLIENT_FALSE = GLOBUS_FALSE,
01219 GLOBUS_FTP_CLIENT_TRUE = GLOBUS_TRUE,
01220 GLOBUS_FTP_CLIENT_MAYBE
01221 }
01222 globus_ftp_client_tristate_t;
01223
01228 typedef enum
01229 {
01230
01231
01232
01233 GLOBUS_FTP_CLIENT_FEATURE_RETRBUFSIZE = 0,
01234 GLOBUS_FTP_CLIENT_FEATURE_RBUFSZ,
01235 GLOBUS_FTP_CLIENT_FEATURE_RBUFSIZ,
01236 GLOBUS_FTP_CLIENT_FEATURE_STORBUFSIZE,
01237 GLOBUS_FTP_CLIENT_FEATURE_SBUSSZ,
01238 GLOBUS_FTP_CLIENT_FEATURE_SBUFSIZ,
01239 GLOBUS_FTP_CLIENT_FEATURE_BUFSIZE,
01240 GLOBUS_FTP_CLIENT_FEATURE_SBUF,
01241 GLOBUS_FTP_CLIENT_FEATURE_ABUF,
01242
01243 GLOBUS_FTP_CLIENT_FEATURE_REST_STREAM,
01244 GLOBUS_FTP_CLIENT_FEATURE_PARALLELISM,
01245 GLOBUS_FTP_CLIENT_FEATURE_DCAU,
01246 GLOBUS_FTP_CLIENT_FEATURE_DCSC,
01247 GLOBUS_FTP_CLIENT_FEATURE_ESTO,
01248 GLOBUS_FTP_CLIENT_FEATURE_ERET,
01249 GLOBUS_FTP_CLIENT_FEATURE_SIZE,
01250 GLOBUS_FTP_CLIENT_FEATURE_CKSM,
01251 GLOBUS_FTP_CLIENT_FEATURE_CHMOD,
01252 GLOBUS_FTP_CLIENT_FEATURE_AUTHZ_ASSERT,
01253 GLOBUS_FTP_CLIENT_FEATURE_CLIENTINFO,
01254 GLOBUS_FTP_CLIENT_FEATURE_SITE_SETNETSTACK,
01255 GLOBUS_FTP_CLIENT_FEATURE_DELAYED_PASV,
01256 GLOBUS_FTP_CLIENT_FEATURE_GETPUT,
01257 GLOBUS_FTP_CLIENT_FEATURE_MLST,
01258 GLOBUS_FTP_CLIENT_FEATURE_CHGRP,
01259 GLOBUS_FTP_CLIENT_FEATURE_UTIME,
01260 GLOBUS_FTP_CLIENT_FEATURE_SYMLINK,
01261 GLOBUS_FTP_CLIENT_FEATURE_MAX,
01262 GLOBUS_FTP_CLIENT_LAST_BUFFER_COMMAND = GLOBUS_FTP_CLIENT_FEATURE_ABUF,
01263 GLOBUS_FTP_CLIENT_FIRST_FEAT_FEATURE = GLOBUS_FTP_CLIENT_FEATURE_SBUF,
01264 GLOBUS_FTP_CLIENT_LAST_FEAT_FEATURE = GLOBUS_FTP_CLIENT_FEATURE_MLST
01265 }
01266 globus_ftp_client_probed_feature_t;
01276 typedef struct globus_i_ftp_client_features_s * globus_ftp_client_features_t;
01277 #ifndef DOXYGEN
01278
01279 globus_result_t
01280 globus_ftp_client_feat(
01281 globus_ftp_client_handle_t * u_handle,
01282 char * url,
01283 globus_ftp_client_operationattr_t * attr,
01284 globus_ftp_client_features_t * u_features,
01285 globus_ftp_client_complete_callback_t complete_callback,
01286 void * callback_arg);
01287
01288 globus_result_t
01289 globus_ftp_client_is_feature_supported(
01290 const globus_ftp_client_features_t * u_features,
01291 globus_ftp_client_tristate_t * answer,
01292 const globus_ftp_client_probed_feature_t feature);
01293
01294 globus_result_t globus_ftp_client_features_init(
01295 globus_ftp_client_features_t *);
01296 globus_result_t globus_ftp_client_features_destroy(
01297 globus_ftp_client_features_t *);
01298
01310 int
01311 globus_error_ftp_error_get_code(
01312 globus_object_t * error);
01313
01314 #define GLOBUS_ERROR_TYPE_FTP (&GLOBUS_ERROR_TYPE_FTP_DEFINITION)
01315 extern const globus_object_type_t GLOBUS_ERROR_TYPE_FTP_DEFINITION;
01316
01317 #endif
01318 EXTERN_C_END
01319
01320 #endif