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
00076 #include "globus_ftp_control.h"
00077 #include "globus_priority_q.h"
00078
00079 #ifdef __cplusplus
00080 extern "C" {
00081 #endif
00082
00109 #define GLOBUS_FTP_CLIENT_MODULE (&globus_i_ftp_client_module)
00110
00111 extern globus_module_descriptor_t globus_i_ftp_client_module;
00112
00116 typedef enum
00117 {
00118 GLOBUS_FTP_CLIENT_ERROR_PARAMETER,
00119 GLOBUS_FTP_CLIENT_ERROR_MEMORY,
00120 GLOBUS_FTP_CLIENT_ERROR_ABORTED,
00121 GLOBUS_FTP_CLIENT_ERROR_INTERNAL,
00122 GLOBUS_FTP_CLIENT_ERROR_IN_USE,
00123 GLOBUS_FTP_CLIENT_ERROR_NOT_IN_USE,
00124 GLOBUS_FTP_CLIENT_ERROR_COMPLETED,
00125 GLOBUS_FTP_CLIENT_ERROR_INVALID_OPERATION,
00126 GLOBUS_FTP_CLIENT_ERROR_UNEXPECTED_EOF,
00127 GLOBUS_FTP_CLIENT_ERROR_NO_SUCH_FILE,
00128 GLOBUS_FTP_CLIENT_ERROR_PROTOCOL,
00129 GLOBUS_FTP_CLIENT_ERROR_RESPONSE,
00130 GLOBUS_FTP_CLIENT_ERROR_FEATURE,
00131 GLOBUS_FTP_CLIENT_ERROR_NO_RESTART_MARKER
00132 } globus_ftp_client_error_t;
00133
00142 typedef enum
00143 {
00144 GLOBUS_FTP_CLIENT_RESTART_NONE,
00145 GLOBUS_FTP_CLIENT_RESTART_STREAM,
00146 GLOBUS_FTP_CLIENT_RESTART_EXTENDED_BLOCK
00147 }
00148 globus_ftp_client_restart_type_t;
00149
00161 typedef struct
00162 {
00167 globus_ftp_client_restart_type_t type;
00172 globus_off_t offset;
00177 globus_off_t ascii_offset;
00178 }
00179 globus_ftp_client_restart_stream_t;
00180
00192 typedef struct
00193 {
00198 globus_ftp_client_restart_type_t type;
00203 globus_fifo_t ranges;
00204 }
00205 globus_ftp_client_restart_extended_block_t;
00206
00220 typedef union
00221 {
00222 globus_ftp_client_restart_type_t type;
00223 globus_ftp_client_restart_stream_t stream;
00224 globus_ftp_client_restart_extended_block_t extended_block;
00225 }
00226 globus_ftp_client_restart_marker_t;
00227
00242 typedef struct globus_i_ftp_client_handle_t * globus_ftp_client_handle_t;
00243
00257 typedef struct globus_i_ftp_client_plugin_t * globus_ftp_client_plugin_t;
00258
00278 typedef void (*globus_ftp_client_complete_callback_t) (
00279 void * user_arg,
00280 globus_ftp_client_handle_t * handle,
00281 globus_object_t * error);
00282
00311 typedef void (*globus_ftp_client_data_callback_t) (
00312 void * user_arg,
00313 globus_ftp_client_handle_t * handle,
00314 globus_object_t * error,
00315 globus_byte_t * buffer,
00316 globus_size_t length,
00317 globus_off_t offset,
00318 globus_bool_t eof);
00319
00333 typedef struct globus_i_ftp_client_operationattr_t *
00334 globus_ftp_client_operationattr_t;
00335
00346 typedef struct
00347 globus_i_ftp_client_handleattr_t * globus_ftp_client_handleattr_t;
00360 #ifndef DOXYGEN
00361 globus_result_t
00362 globus_ftp_client_restart_marker_init(
00363 globus_ftp_client_restart_marker_t * marker);
00364
00365 globus_result_t
00366 globus_ftp_client_restart_marker_destroy(
00367 globus_ftp_client_restart_marker_t * marker);
00368
00369 globus_result_t
00370 globus_ftp_client_restart_marker_copy(
00371 globus_ftp_client_restart_marker_t * new_marker,
00372 globus_ftp_client_restart_marker_t * marker);
00373
00374 globus_result_t
00375 globus_ftp_client_restart_marker_insert_range(
00376 globus_ftp_client_restart_marker_t * marker,
00377 globus_off_t offset,
00378 globus_off_t end_offset);
00379
00380 globus_result_t
00381 globus_ftp_client_restart_marker_set_offset(
00382 globus_ftp_client_restart_marker_t * marker,
00383 globus_off_t offset);
00384
00385 globus_result_t
00386 globus_ftp_client_restart_marker_set_ascii_offset(
00387 globus_ftp_client_restart_marker_t * marker,
00388 globus_off_t offset,
00389 globus_off_t ascii_offset);
00390
00391 globus_result_t
00392 globus_ftp_client_restart_marker_get_total(
00393 globus_ftp_client_restart_marker_t * marker,
00394 globus_off_t * total_bytes);
00395
00396 globus_result_t
00397 globus_ftp_client_restart_marker_get_first_block(
00398 globus_ftp_client_restart_marker_t * marker,
00399 globus_off_t * offset,
00400 globus_off_t * end_offset);
00401
00402 globus_result_t
00403 globus_ftp_client_restart_marker_to_string(
00404 globus_ftp_client_restart_marker_t * marker,
00405 char ** marker_string);
00406
00407 globus_result_t
00408 globus_ftp_client_restart_marker_from_string(
00409 globus_ftp_client_restart_marker_t * marker,
00410 const char * marker_string);
00411 #endif
00412
00426 #ifndef DOXYGEN
00427 globus_result_t
00428 globus_ftp_client_handle_init(
00429 globus_ftp_client_handle_t * handle,
00430 globus_ftp_client_handleattr_t* attr);
00431
00432 globus_result_t
00433 globus_ftp_client_handle_destroy(
00434 globus_ftp_client_handle_t * handle);
00435
00436 globus_result_t
00437 globus_ftp_client_handle_borrow_connection(
00438 globus_ftp_client_handle_t * from_handle,
00439 globus_bool_t from_is_source,
00440 globus_ftp_client_handle_t * to_handle,
00441 globus_bool_t to_is_source);
00442
00443 globus_result_t
00444 globus_ftp_client_handle_cache_url_state(
00445 globus_ftp_client_handle_t * handle,
00446 const char * url);
00447
00448 globus_result_t
00449 globus_ftp_client_handle_flush_url_state(
00450 globus_ftp_client_handle_t * handle,
00451 const char * url);
00452
00453 globus_result_t
00454 globus_ftp_client_handle_set_user_pointer(
00455 globus_ftp_client_handle_t * handle,
00456 void * user_pointer);
00457
00458 globus_result_t
00459 globus_ftp_client_handle_get_user_pointer(
00460 const globus_ftp_client_handle_t * handle,
00461 void ** user_pointer);
00462
00463 globus_result_t
00464 globus_ftp_client_handle_get_restart_marker(
00465 const globus_ftp_client_handle_t * handle,
00466 globus_ftp_client_restart_marker_t * marker);
00467
00468 globus_result_t
00469 globus_ftp_client_handle_add_plugin(
00470 globus_ftp_client_handle_t * handle,
00471 globus_ftp_client_plugin_t * plugin);
00472
00473 globus_result_t
00474 globus_ftp_client_handle_remove_plugin(
00475 globus_ftp_client_handle_t * handle,
00476 globus_ftp_client_plugin_t * plugin);
00477
00478 #endif
00479
00492 #ifndef DOXYGEN
00493 globus_result_t
00494 globus_ftp_client_handleattr_init(
00495 globus_ftp_client_handleattr_t * attr);
00496
00497 globus_result_t
00498 globus_ftp_client_handleattr_destroy(
00499 globus_ftp_client_handleattr_t * attr);
00500
00501 globus_result_t
00502 globus_ftp_client_handleattr_copy(
00503 globus_ftp_client_handleattr_t * dest,
00504 globus_ftp_client_handleattr_t * src);
00505
00506 globus_result_t
00507 globus_ftp_client_handleattr_add_cached_url(
00508 globus_ftp_client_handleattr_t * attr,
00509 const char * url);
00510
00511 globus_result_t
00512 globus_ftp_client_handleattr_remove_cached_url(
00513 globus_ftp_client_handleattr_t * attr,
00514 const char * url);
00515
00516 globus_result_t
00517 globus_ftp_client_handleattr_set_cache_all(
00518 globus_ftp_client_handleattr_t * attr,
00519 globus_bool_t cache_all);
00520
00521 globus_result_t
00522 globus_ftp_client_handleattr_get_cache_all(
00523 const globus_ftp_client_handleattr_t * attr,
00524 globus_bool_t * cache_all);
00525
00526 globus_result_t
00527 globus_ftp_client_handleattr_set_rfc1738_url(
00528 globus_ftp_client_handleattr_t * attr,
00529 globus_bool_t rfc1738_url);
00530
00531 globus_result_t
00532 globus_ftp_client_handleattr_get_rfc1738_url(
00533 const globus_ftp_client_handleattr_t * attr,
00534 globus_bool_t * rfc1738_url);
00535
00536 typedef void (*globus_ftp_client_pipeline_callback_t)(
00537 globus_ftp_client_handle_t * handle,
00538 char ** source_url,
00539 char ** dest_url,
00540 void * user_arg);
00541
00542 globus_result_t
00543 globus_ftp_client_handleattr_set_pipeline(
00544 globus_ftp_client_handleattr_t * attr,
00545 globus_size_t outstanding_commands,
00546 globus_ftp_client_pipeline_callback_t pipeline_callback,
00547 void * pipeline_arg);
00548
00549 globus_result_t
00550 globus_ftp_client_handleattr_get_pipeline(
00551 const globus_ftp_client_handleattr_t * attr,
00552 globus_size_t * outstanding_commands,
00553 globus_ftp_client_pipeline_callback_t * pipeline_callback,
00554 void ** pipeline_arg);
00555
00556 globus_result_t
00557 globus_ftp_client_handleattr_set_gridftp2(
00558 globus_ftp_client_handleattr_t * attr,
00559 globus_bool_t gridftp2);
00560
00561 globus_result_t
00562 globus_ftp_client_handleattr_get_gridftp2(
00563 const globus_ftp_client_handleattr_t * attr,
00564 globus_bool_t * gridftp2);
00565
00566 globus_result_t
00567 globus_ftp_client_handleattr_set_netlogger(
00568 globus_ftp_client_handleattr_t * attr,
00569 globus_netlogger_handle_t * nl_handle);
00570
00571 globus_result_t
00572 globus_ftp_client_handleattr_set_clientinfo(
00573 globus_ftp_client_handleattr_t * attr,
00574 const char * app_name,
00575 const char * app_version,
00576 const char * other);
00577
00578 globus_result_t
00579 globus_ftp_client_handleattr_get_clientinfo(
00580 globus_ftp_client_handleattr_t * attr,
00581 char ** app_name,
00582 char ** app_version,
00583 char ** other);
00584
00585 globus_result_t
00586 globus_ftp_client_handleattr_set_netlogger_ftp_io(
00587 globus_ftp_client_handleattr_t * attr,
00588 globus_netlogger_handle_t * nl_handle,
00589 globus_bool_t ftp,
00590 globus_bool_t io);
00591
00592 globus_result_t
00593 globus_ftp_client_handleattr_remove_plugin(
00594 globus_ftp_client_handleattr_t * attr,
00595 globus_ftp_client_plugin_t * plugin);
00596
00597 globus_result_t
00598 globus_ftp_client_handleattr_add_plugin(
00599 globus_ftp_client_handleattr_t * attr,
00600 globus_ftp_client_plugin_t * plugin);
00601 #endif
00602
00611 #ifndef DOXYGEN
00612
00613 globus_result_t
00614 globus_ftp_client_chmod(
00615 globus_ftp_client_handle_t * u_handle,
00616 const char * url,
00617 int mode,
00618 globus_ftp_client_operationattr_t * attr,
00619 globus_ftp_client_complete_callback_t complete_callback,
00620 void * callback_arg);
00621
00622 globus_result_t
00623 globus_ftp_client_chgrp(
00624 globus_ftp_client_handle_t * u_handle,
00625 const char * url,
00626 const char * group,
00627 globus_ftp_client_operationattr_t * attr,
00628 globus_ftp_client_complete_callback_t complete_callback,
00629 void * callback_arg);
00630
00631 globus_result_t
00632 globus_ftp_client_utime(
00633 globus_ftp_client_handle_t * u_handle,
00634 const char * url,
00635 const struct tm * utime_time,
00636 globus_ftp_client_operationattr_t * attr,
00637 globus_ftp_client_complete_callback_t complete_callback,
00638 void * callback_arg);
00639
00640 globus_result_t
00641 globus_ftp_client_symlink(
00642 globus_ftp_client_handle_t * u_handle,
00643 const char * url,
00644 const char * link_url,
00645 globus_ftp_client_operationattr_t * attr,
00646 globus_ftp_client_complete_callback_t complete_callback,
00647 void * callback_arg);
00648
00649 globus_result_t
00650 globus_ftp_client_cksm(
00651 globus_ftp_client_handle_t * handle,
00652 const char * url,
00653 globus_ftp_client_operationattr_t * attr,
00654 char * cksm,
00655 globus_off_t offset,
00656 globus_off_t length,
00657 const char * algorithm,
00658 globus_ftp_client_complete_callback_t complete_callback,
00659 void * callback_arg);
00660
00661 globus_result_t
00662 globus_ftp_client_delete(
00663 globus_ftp_client_handle_t * handle,
00664 const char * url,
00665 globus_ftp_client_operationattr_t * attr,
00666 globus_ftp_client_complete_callback_t complete_callback,
00667 void * callback_arg);
00668
00669 globus_result_t
00670 globus_ftp_client_mkdir(
00671 globus_ftp_client_handle_t * handle,
00672 const char * url,
00673 globus_ftp_client_operationattr_t * attr,
00674 globus_ftp_client_complete_callback_t complete_callback,
00675 void * callback_arg);
00676
00677 globus_result_t
00678 globus_ftp_client_rmdir(
00679 globus_ftp_client_handle_t * handle,
00680 const char * url,
00681 globus_ftp_client_operationattr_t * attr,
00682 globus_ftp_client_complete_callback_t complete_callback,
00683 void * callback_arg);
00684
00685 globus_result_t
00686 globus_ftp_client_list(
00687 globus_ftp_client_handle_t * handle,
00688 const char * url,
00689 globus_ftp_client_operationattr_t * attr,
00690 globus_ftp_client_complete_callback_t complete_callback,
00691 void * callback_arg);
00692
00693 globus_result_t
00694 globus_ftp_client_verbose_list(
00695 globus_ftp_client_handle_t * handle,
00696 const char * url,
00697 globus_ftp_client_operationattr_t * attr,
00698 globus_ftp_client_complete_callback_t complete_callback,
00699 void * callback_arg);
00700
00701 globus_result_t
00702 globus_ftp_client_machine_list(
00703 globus_ftp_client_handle_t * handle,
00704 const char * url,
00705 globus_ftp_client_operationattr_t * attr,
00706 globus_ftp_client_complete_callback_t complete_callback,
00707 void * callback_arg);
00708
00709 globus_result_t
00710 globus_ftp_client_recursive_list(
00711 globus_ftp_client_handle_t * handle,
00712 const char * url,
00713 globus_ftp_client_operationattr_t * attr,
00714 globus_ftp_client_complete_callback_t complete_callback,
00715 void * callback_arg);
00716
00717 globus_result_t
00718 globus_ftp_client_mlst(
00719 globus_ftp_client_handle_t * u_handle,
00720 const char * url,
00721 globus_ftp_client_operationattr_t * attr,
00722 globus_byte_t ** mlst_buffer,
00723 globus_size_t * mlst_buffer_length,
00724 globus_ftp_client_complete_callback_t complete_callback,
00725 void * callback_arg);
00726
00727 globus_result_t
00728 globus_ftp_client_cwd(
00729 globus_ftp_client_handle_t * u_handle,
00730 const char * url,
00731 globus_ftp_client_operationattr_t * attr,
00732 globus_byte_t ** cwd_buffer,
00733 globus_size_t * cwd_buffer_length,
00734 globus_ftp_client_complete_callback_t complete_callback,
00735 void * callback_arg);
00736
00737 globus_result_t
00738 globus_ftp_client_stat(
00739 globus_ftp_client_handle_t * u_handle,
00740 const char * url,
00741 globus_ftp_client_operationattr_t * attr,
00742 globus_byte_t ** stat_buffer,
00743 globus_size_t * stat_buffer_length,
00744 globus_ftp_client_complete_callback_t complete_callback,
00745 void * callback_arg);
00746
00747 globus_result_t
00748 globus_ftp_client_move(
00749 globus_ftp_client_handle_t * handle,
00750 const char * source_url,
00751 const char * dest_url,
00752 globus_ftp_client_operationattr_t * attr,
00753 globus_ftp_client_complete_callback_t complete_callback,
00754 void * callback_arg);
00755
00756 globus_result_t
00757 globus_ftp_client_get(
00758 globus_ftp_client_handle_t * handle,
00759 const char * url,
00760 globus_ftp_client_operationattr_t * attr,
00761 globus_ftp_client_restart_marker_t * restart,
00762 globus_ftp_client_complete_callback_t complete_callback,
00763 void * callback_arg);
00764
00765 globus_result_t
00766 globus_ftp_client_put(
00767 globus_ftp_client_handle_t * handle,
00768 const char * url,
00769 globus_ftp_client_operationattr_t * attr,
00770 globus_ftp_client_restart_marker_t * restart,
00771 globus_ftp_client_complete_callback_t complete_callback,
00772 void * callback_arg);
00773
00774 globus_result_t
00775 globus_ftp_client_third_party_transfer(
00776 globus_ftp_client_handle_t * handle,
00777 const char * source_url,
00778 globus_ftp_client_operationattr_t * source_attr,
00779 const char * dest_url,
00780 globus_ftp_client_operationattr_t * dest_attr,
00781 globus_ftp_client_restart_marker_t * restart,
00782 globus_ftp_client_complete_callback_t complete_callback,
00783 void * callback_arg);
00784
00785 globus_result_t
00786 globus_ftp_client_partial_get(
00787 globus_ftp_client_handle_t * handle,
00788 const char * url,
00789 globus_ftp_client_operationattr_t * attr,
00790 globus_ftp_client_restart_marker_t * restart,
00791 globus_off_t partial_offset,
00792 globus_off_t partial_end_offset,
00793 globus_ftp_client_complete_callback_t complete_callback,
00794 void * callback_arg);
00795
00796 globus_result_t
00797 globus_ftp_client_partial_put(
00798 globus_ftp_client_handle_t * handle,
00799 const char * url,
00800 globus_ftp_client_operationattr_t * attr,
00801 globus_ftp_client_restart_marker_t * restart,
00802 globus_off_t partial_offset,
00803 globus_off_t partial_end_offset,
00804 globus_ftp_client_complete_callback_t complete_callback,
00805 void * callback_arg);
00806
00807 globus_result_t
00808 globus_ftp_client_partial_third_party_transfer(
00809 globus_ftp_client_handle_t * handle,
00810 const char * source_url,
00811 globus_ftp_client_operationattr_t * source_attr,
00812 const char * dest_url,
00813 globus_ftp_client_operationattr_t * dest_attr,
00814 globus_ftp_client_restart_marker_t * restart,
00815 globus_off_t partial_offset,
00816 globus_off_t partial_end_offset,
00817 globus_ftp_client_complete_callback_t complete_callback,
00818 void * callback_arg);
00819
00820 globus_result_t
00821 globus_ftp_client_extended_get(
00822 globus_ftp_client_handle_t * handle,
00823 const char * url,
00824 globus_ftp_client_operationattr_t * attr,
00825 globus_ftp_client_restart_marker_t * restart,
00826 const char * eret_alg_str,
00827 globus_ftp_client_complete_callback_t complete_callback,
00828 void * callback_arg);
00829
00830 globus_result_t
00831 globus_ftp_client_extended_put(
00832 globus_ftp_client_handle_t * handle,
00833 const char * url,
00834 globus_ftp_client_operationattr_t * attr,
00835 globus_ftp_client_restart_marker_t * restart,
00836 const char * esto_alg_str,
00837 globus_ftp_client_complete_callback_t complete_callback,
00838 void * callback_arg);
00839
00840 globus_result_t
00841 globus_ftp_client_extended_third_party_transfer(
00842 globus_ftp_client_handle_t * handle,
00843 const char * source_url,
00844 globus_ftp_client_operationattr_t * source_attr,
00845 const char * eret_alg_str,
00846 const char * dest_url,
00847 globus_ftp_client_operationattr_t * dest_attr,
00848 const char * esto_alg_str,
00849 globus_ftp_client_restart_marker_t * restart,
00850 globus_ftp_client_complete_callback_t complete_callback,
00851 void * callback_arg);
00852
00853 globus_result_t
00854 globus_ftp_client_abort(
00855 globus_ftp_client_handle_t * handle);
00856
00857 globus_result_t
00858 globus_ftp_client_modification_time(
00859 globus_ftp_client_handle_t * handle,
00860 const char * url,
00861 globus_ftp_client_operationattr_t * attr,
00862 globus_abstime_t * modification_time,
00863 globus_ftp_client_complete_callback_t complete_callback,
00864 void * callback_arg);
00865
00866 globus_result_t
00867 globus_ftp_client_size(
00868 globus_ftp_client_handle_t * handle,
00869 const char * url,
00870 globus_ftp_client_operationattr_t * attr,
00871 globus_off_t * size,
00872 globus_ftp_client_complete_callback_t complete_callback,
00873 void * callback_arg);
00874
00875 globus_result_t
00876 globus_ftp_client_exists(
00877 globus_ftp_client_handle_t * handle,
00878 const char * url,
00879 globus_ftp_client_operationattr_t * attr,
00880 globus_ftp_client_complete_callback_t complete_callback,
00881 void * callback_arg);
00882 #endif
00883
00891 #ifndef DOXYGEN
00892 globus_result_t
00893 globus_ftp_client_operationattr_init(
00894 globus_ftp_client_operationattr_t * attr);
00895
00896 globus_result_t
00897 globus_ftp_client_operationattr_destroy(
00898 globus_ftp_client_operationattr_t * attr);
00899
00900 globus_result_t
00901 globus_ftp_client_operationattr_set_parallelism(
00902 globus_ftp_client_operationattr_t * attr,
00903 const globus_ftp_control_parallelism_t * parallelism);
00904
00905 globus_result_t
00906 globus_ftp_client_operationattr_get_parallelism(
00907 const globus_ftp_client_operationattr_t * attr,
00908 globus_ftp_control_parallelism_t * parallelism);
00909
00910 globus_result_t
00911 globus_ftp_client_operationattr_set_storage_module(
00912 globus_ftp_client_operationattr_t * attr,
00913 const char * module_name,
00914 const char * module_args);
00915
00916 globus_result_t
00917 globus_ftp_client_operationattr_get_storage_module(
00918 const globus_ftp_client_operationattr_t * attr,
00919 char ** module_name,
00920 char ** module_args);
00921
00922 globus_result_t
00923 globus_ftp_client_operationattr_set_net_stack(
00924 globus_ftp_client_operationattr_t * attr,
00925 const char * driver_list);
00926
00927 globus_result_t
00928 globus_ftp_client_operationattr_get_net_stack(
00929 const globus_ftp_client_operationattr_t * attr,
00930 char ** driver_list);
00931
00932 globus_result_t
00933 globus_ftp_client_operationattr_set_disk_stack(
00934 globus_ftp_client_operationattr_t * attr,
00935 const char * driver_list);
00936
00937 globus_result_t
00938 globus_ftp_client_operationattr_get_disk_stack(
00939 const globus_ftp_client_operationattr_t * attr,
00940 char ** driver_list);
00941
00942 globus_result_t
00943 globus_ftp_client_operationattr_set_authz_assert(
00944 globus_ftp_client_operationattr_t * attr,
00945 const char * authz_assert,
00946 globus_bool_t cache_authz_assert);
00947
00948 globus_result_t
00949 globus_ftp_client_operationattr_get_authz_assert(
00950 const globus_ftp_client_operationattr_t * attr,
00951 char ** authz_assert,
00952 globus_bool_t * cache_authz_assert);
00953
00954 globus_result_t
00955 globus_ftp_client_operationattr_set_striped(
00956 globus_ftp_client_operationattr_t * attr,
00957 globus_bool_t striped);
00958
00959 globus_result_t
00960 globus_ftp_client_operationattr_get_striped(
00961 const globus_ftp_client_operationattr_t * attr,
00962 globus_bool_t * striped);
00963
00964 globus_result_t
00965 globus_ftp_client_operationattr_set_layout(
00966 globus_ftp_client_operationattr_t * attr,
00967 const globus_ftp_control_layout_t * layout);
00968
00969 globus_result_t
00970 globus_ftp_client_operationattr_get_layout(
00971 const globus_ftp_client_operationattr_t * attr,
00972 globus_ftp_control_layout_t * layout);
00973
00974 globus_result_t
00975 globus_ftp_client_operationattr_set_tcp_buffer(
00976 globus_ftp_client_operationattr_t * attr,
00977 const globus_ftp_control_tcpbuffer_t * tcp_buffer);
00978
00979 globus_result_t
00980 globus_ftp_client_operationattr_get_tcp_buffer(
00981 const globus_ftp_client_operationattr_t * attr,
00982 globus_ftp_control_tcpbuffer_t * tcp_buffer);
00983
00984 globus_result_t
00985 globus_ftp_client_operationattr_set_type(
00986 globus_ftp_client_operationattr_t * attr,
00987 globus_ftp_control_type_t type);
00988
00989 globus_result_t
00990 globus_ftp_client_operationattr_get_type(
00991 const globus_ftp_client_operationattr_t * attr,
00992 globus_ftp_control_type_t * type);
00993
00994 globus_result_t
00995 globus_ftp_client_operationattr_set_mode(
00996 globus_ftp_client_operationattr_t * attr,
00997 globus_ftp_control_mode_t mode);
00998
00999 globus_result_t
01000 globus_ftp_client_operationattr_get_mode(
01001 const globus_ftp_client_operationattr_t * attr,
01002 globus_ftp_control_mode_t * mode);
01003
01004 globus_result_t
01005 globus_ftp_client_operationattr_set_list_uses_data_mode(
01006 const globus_ftp_client_operationattr_t * attr,
01007 globus_bool_t list_uses_data_mode);
01008
01009 globus_result_t
01010 globus_ftp_client_operationattr_get_list_uses_data_mode(
01011 const globus_ftp_client_operationattr_t * attr,
01012 globus_bool_t * list_uses_data_mode);
01013
01014 globus_result_t
01015 globus_ftp_client_operationattr_set_delayed_pasv(
01016 const globus_ftp_client_operationattr_t * attr,
01017 globus_bool_t delayed_pasv);
01018
01019 globus_result_t
01020 globus_ftp_client_operationattr_get_delayed_pasv(
01021 const globus_ftp_client_operationattr_t * attr,
01022 globus_bool_t * delayed_pasv);
01023
01024 globus_result_t
01025 globus_ftp_client_operationattr_set_dcau(
01026 globus_ftp_client_operationattr_t * attr,
01027 const globus_ftp_control_dcau_t * dcau);
01028
01029 globus_result_t
01030 globus_ftp_client_operationattr_get_dcau(
01031 const globus_ftp_client_operationattr_t * attr,
01032 globus_ftp_control_dcau_t * dcau);
01033
01034 globus_result_t
01035 globus_ftp_client_operationattr_set_data_protection(
01036 globus_ftp_client_operationattr_t * attr,
01037 globus_ftp_control_protection_t protection);
01038
01039 globus_result_t
01040 globus_ftp_client_operationattr_get_data_protection(
01041 const globus_ftp_client_operationattr_t * attr,
01042 globus_ftp_control_protection_t * protection);
01043
01044 globus_result_t
01045 globus_ftp_client_operationattr_set_control_protection(
01046 globus_ftp_client_operationattr_t * attr,
01047 globus_ftp_control_protection_t protection);
01048
01049 globus_result_t
01050 globus_ftp_client_operationattr_get_control_protection(
01051 const globus_ftp_client_operationattr_t * attr,
01052 globus_ftp_control_protection_t * protection);
01053
01054 globus_result_t
01055 globus_ftp_client_operationattr_set_data_security(
01056 globus_ftp_client_operationattr_t * attr,
01057 int type,
01058 void * credential);
01059
01060 globus_result_t
01061 globus_ftp_client_operationattr_get_data_security(
01062 const globus_ftp_client_operationattr_t * attr,
01063 int * type,
01064 void ** credential);
01065
01066 globus_result_t
01067 globus_ftp_client_operationattr_set_resume_third_party_transfer(
01068 globus_ftp_client_operationattr_t * attr,
01069 globus_bool_t resume);
01070
01071 globus_result_t
01072 globus_ftp_client_operationattr_get_resume_third_party_transfer(
01073 const globus_ftp_client_operationattr_t * attr,
01074 globus_bool_t * resume);
01075
01076 globus_result_t
01077 globus_ftp_client_operationattr_set_authorization(
01078 globus_ftp_client_operationattr_t * attr,
01079 gss_cred_id_t credential,
01080 const char * user,
01081 const char * password,
01082 const char * account,
01083 const char * subject);
01084
01085 globus_result_t
01086 globus_ftp_client_operationattr_get_authorization(
01087 const globus_ftp_client_operationattr_t * attr,
01088 gss_cred_id_t * credential,
01089 char ** user,
01090 char ** password,
01091 char ** account,
01092 char ** subject);
01093
01094 globus_result_t
01095 globus_ftp_client_operationattr_set_append(
01096 globus_ftp_client_operationattr_t * attr,
01097 globus_bool_t append);
01098
01099 globus_result_t
01100 globus_ftp_client_operationattr_get_append(
01101 const globus_ftp_client_operationattr_t * attr,
01102 globus_bool_t * append);
01103
01104 globus_result_t
01105 globus_ftp_client_operationattr_set_read_all(
01106 globus_ftp_client_operationattr_t * attr,
01107 globus_bool_t read_all,
01108 globus_ftp_client_data_callback_t intermediate_callbacks,
01109 void * intermediate_callback_arg);
01110
01111 globus_result_t
01112 globus_ftp_client_operationattr_get_read_all(
01113 const globus_ftp_client_operationattr_t * attr,
01114 globus_bool_t * read_all,
01115 globus_ftp_client_data_callback_t * intermediate_callbacks,
01116 void ** intermediate_callback_arg);
01117
01118 globus_result_t
01119 globus_ftp_client_operationattr_set_allow_ipv6(
01120 globus_ftp_client_operationattr_t * attr,
01121 globus_bool_t allow);
01122
01123 globus_result_t
01124 globus_ftp_client_operationattr_get_allow_ipv6(
01125 const globus_ftp_client_operationattr_t * attr,
01126 globus_bool_t * allow);
01127
01128 globus_result_t
01129 globus_ftp_client_operationattr_set_allocate(
01130 globus_ftp_client_operationattr_t * attr,
01131 const globus_off_t allocated_size);
01132
01133 globus_result_t
01134 globus_ftp_client_operationattr_get_allocate(
01135 const globus_ftp_client_operationattr_t * attr,
01136 globus_off_t * allocated_size);
01137
01138 globus_result_t
01139 globus_ftp_client_operationattr_copy(
01140 globus_ftp_client_operationattr_t * dst,
01141 const globus_ftp_client_operationattr_t * src);
01142
01143 globus_result_t
01144 globus_ftp_client_operationattr_set_rfc1738_url(
01145 globus_ftp_client_operationattr_t * attr,
01146 globus_bool_t rfc1738_url);
01147
01148 globus_result_t
01149 globus_ftp_client_operationattr_get_rfc1738_url(
01150 const globus_ftp_client_operationattr_t * attr,
01151 globus_bool_t * rfc1738_url);
01152 #endif
01153
01174 #ifndef DOXYGEN
01175 globus_result_t
01176 globus_ftp_client_register_read(
01177 globus_ftp_client_handle_t * handle,
01178 globus_byte_t * buffer,
01179 globus_size_t buffer_length,
01180 globus_ftp_client_data_callback_t callback,
01181 void * callback_arg);
01182
01183 globus_result_t
01184 globus_ftp_client_register_write(
01185 globus_ftp_client_handle_t * handle,
01186 globus_byte_t * buffer,
01187 globus_size_t buffer_length,
01188 globus_off_t offset,
01189 globus_bool_t eof,
01190 globus_ftp_client_data_callback_t callback,
01191 void * callback_arg);
01192 #endif
01193
01200 typedef enum
01201 {
01202 GLOBUS_FTP_CLIENT_FALSE = GLOBUS_FALSE,
01203 GLOBUS_FTP_CLIENT_TRUE = GLOBUS_TRUE,
01204 GLOBUS_FTP_CLIENT_MAYBE
01205 }
01206 globus_ftp_client_tristate_t;
01207
01212 typedef enum
01213 {
01214
01215
01216
01217 GLOBUS_FTP_CLIENT_FEATURE_RETRBUFSIZE = 0,
01218 GLOBUS_FTP_CLIENT_FEATURE_RBUFSZ,
01219 GLOBUS_FTP_CLIENT_FEATURE_RBUFSIZ,
01220 GLOBUS_FTP_CLIENT_FEATURE_STORBUFSIZE,
01221 GLOBUS_FTP_CLIENT_FEATURE_SBUSSZ,
01222 GLOBUS_FTP_CLIENT_FEATURE_SBUFSIZ,
01223 GLOBUS_FTP_CLIENT_FEATURE_BUFSIZE,
01224 GLOBUS_FTP_CLIENT_FEATURE_SBUF,
01225 GLOBUS_FTP_CLIENT_FEATURE_ABUF,
01226
01227 GLOBUS_FTP_CLIENT_FEATURE_REST_STREAM,
01228 GLOBUS_FTP_CLIENT_FEATURE_PARALLELISM,
01229 GLOBUS_FTP_CLIENT_FEATURE_DCAU,
01230 GLOBUS_FTP_CLIENT_FEATURE_DCSC,
01231 GLOBUS_FTP_CLIENT_FEATURE_ESTO,
01232 GLOBUS_FTP_CLIENT_FEATURE_ERET,
01233 GLOBUS_FTP_CLIENT_FEATURE_SIZE,
01234 GLOBUS_FTP_CLIENT_FEATURE_CKSM,
01235 GLOBUS_FTP_CLIENT_FEATURE_CHMOD,
01236 GLOBUS_FTP_CLIENT_FEATURE_AUTHZ_ASSERT,
01237 GLOBUS_FTP_CLIENT_FEATURE_CLIENTINFO,
01238 GLOBUS_FTP_CLIENT_FEATURE_SITE_SETNETSTACK,
01239 GLOBUS_FTP_CLIENT_FEATURE_DELAYED_PASV,
01240 GLOBUS_FTP_CLIENT_FEATURE_GETPUT,
01241 GLOBUS_FTP_CLIENT_FEATURE_MLST,
01242 GLOBUS_FTP_CLIENT_FEATURE_CHGRP,
01243 GLOBUS_FTP_CLIENT_FEATURE_UTIME,
01244 GLOBUS_FTP_CLIENT_FEATURE_SYMLINK,
01245 GLOBUS_FTP_CLIENT_FEATURE_MAX,
01246 GLOBUS_FTP_CLIENT_LAST_BUFFER_COMMAND = GLOBUS_FTP_CLIENT_FEATURE_ABUF,
01247 GLOBUS_FTP_CLIENT_FIRST_FEAT_FEATURE = GLOBUS_FTP_CLIENT_FEATURE_SBUF,
01248 GLOBUS_FTP_CLIENT_LAST_FEAT_FEATURE = GLOBUS_FTP_CLIENT_FEATURE_MLST
01249 }
01250 globus_ftp_client_probed_feature_t;
01260 typedef struct globus_i_ftp_client_features_s * globus_ftp_client_features_t;
01261 #ifndef DOXYGEN
01262
01263 globus_result_t
01264 globus_ftp_client_feat(
01265 globus_ftp_client_handle_t * u_handle,
01266 char * url,
01267 globus_ftp_client_operationattr_t * attr,
01268 globus_ftp_client_features_t * u_features,
01269 globus_ftp_client_complete_callback_t complete_callback,
01270 void * callback_arg);
01271
01272 globus_result_t
01273 globus_ftp_client_is_feature_supported(
01274 const globus_ftp_client_features_t * u_features,
01275 globus_ftp_client_tristate_t * answer,
01276 const globus_ftp_client_probed_feature_t feature);
01277
01278 globus_result_t globus_ftp_client_features_init(
01279 globus_ftp_client_features_t *);
01280 globus_result_t globus_ftp_client_features_destroy(
01281 globus_ftp_client_features_t *);
01282
01294 int
01295 globus_error_ftp_error_get_code(
01296 globus_object_t * error);
01297
01298 #define GLOBUS_ERROR_TYPE_FTP (&GLOBUS_ERROR_TYPE_FTP_DEFINITION)
01299 extern const globus_object_type_t GLOBUS_ERROR_TYPE_FTP_DEFINITION;
01300
01301 #endif
01302 EXTERN_C_END
01303
01304 #endif