17 #ifndef GLOBUS_FTP_CLIENT_H
18 #define GLOBUS_FTP_CLIENT_H
25 #ifndef GLOBUS_GLOBAL_DOCUMENT_SET
76 #include "globus_ftp_control.h"
77 #include "globus_priority_q.h"
109 #define GLOBUS_FTP_CLIENT_MODULE (&globus_i_ftp_client_module)
111 extern globus_module_descriptor_t globus_i_ftp_client_module;
118 GLOBUS_FTP_CLIENT_ERROR_PARAMETER,
119 GLOBUS_FTP_CLIENT_ERROR_MEMORY,
120 GLOBUS_FTP_CLIENT_ERROR_ABORTED,
121 GLOBUS_FTP_CLIENT_ERROR_INTERNAL,
122 GLOBUS_FTP_CLIENT_ERROR_IN_USE,
123 GLOBUS_FTP_CLIENT_ERROR_NOT_IN_USE,
124 GLOBUS_FTP_CLIENT_ERROR_COMPLETED,
125 GLOBUS_FTP_CLIENT_ERROR_INVALID_OPERATION,
126 GLOBUS_FTP_CLIENT_ERROR_UNEXPECTED_EOF,
127 GLOBUS_FTP_CLIENT_ERROR_NO_SUCH_FILE,
128 GLOBUS_FTP_CLIENT_ERROR_PROTOCOL,
129 GLOBUS_FTP_CLIENT_ERROR_RESPONSE,
130 GLOBUS_FTP_CLIENT_ERROR_FEATURE,
131 GLOBUS_FTP_CLIENT_ERROR_NO_RESTART_MARKER
144 GLOBUS_FTP_CLIENT_RESTART_NONE,
145 GLOBUS_FTP_CLIENT_RESTART_STREAM,
146 GLOBUS_FTP_CLIENT_RESTART_EXTENDED_BLOCK
177 globus_off_t ascii_offset;
203 globus_fifo_t ranges;
280 globus_ftp_client_handle_t * handle,
281 globus_object_t * error);
313 globus_ftp_client_handle_t * handle,
314 globus_object_t * error,
315 globus_byte_t * buffer,
316 globus_size_t length,
378 globus_off_t end_offset);
383 globus_off_t offset);
389 globus_off_t ascii_offset);
394 globus_off_t * total_bytes);
397 globus_ftp_client_restart_marker_get_first_block(
399 globus_off_t * offset,
400 globus_off_t * end_offset);
405 char ** marker_string);
410 const char * marker_string);
429 globus_ftp_client_handle_t * handle,
430 globus_ftp_client_handleattr_t* attr);
434 globus_ftp_client_handle_t * handle);
437 globus_ftp_client_handle_borrow_connection(
438 globus_ftp_client_handle_t * from_handle,
439 globus_bool_t from_is_source,
440 globus_ftp_client_handle_t * to_handle,
441 globus_bool_t to_is_source);
445 globus_ftp_client_handle_t * handle,
450 globus_ftp_client_handle_t * handle,
455 globus_ftp_client_handle_t * handle,
456 void * user_pointer);
459 globus_ftp_client_handle_get_user_pointer(
460 const globus_ftp_client_handle_t * handle,
461 void ** user_pointer);
464 globus_ftp_client_handle_get_restart_marker(
465 const globus_ftp_client_handle_t * handle,
470 globus_ftp_client_handle_t * handle,
471 globus_ftp_client_plugin_t * plugin);
475 globus_ftp_client_handle_t * handle,
476 globus_ftp_client_plugin_t * plugin);
495 globus_ftp_client_handleattr_t * attr);
499 globus_ftp_client_handleattr_t * attr);
503 globus_ftp_client_handleattr_t * dest,
504 globus_ftp_client_handleattr_t * src);
508 globus_ftp_client_handleattr_t * attr,
512 globus_ftp_client_handleattr_remove_cached_url(
513 globus_ftp_client_handleattr_t * attr,
518 globus_ftp_client_handleattr_t * attr,
519 globus_bool_t cache_all);
522 globus_ftp_client_handleattr_get_cache_all(
523 const globus_ftp_client_handleattr_t * attr,
524 globus_bool_t * cache_all);
528 globus_ftp_client_handleattr_t * attr,
529 globus_bool_t rfc1738_url);
532 globus_ftp_client_handleattr_get_rfc1738_url(
533 const globus_ftp_client_handleattr_t * attr,
534 globus_bool_t * rfc1738_url);
536 typedef void (*globus_ftp_client_pipeline_callback_t)(
537 globus_ftp_client_handle_t * handle,
544 globus_ftp_client_handleattr_t * attr,
545 globus_size_t outstanding_commands,
546 globus_ftp_client_pipeline_callback_t pipeline_callback,
547 void * pipeline_arg);
550 globus_ftp_client_handleattr_get_pipeline(
551 const globus_ftp_client_handleattr_t * attr,
552 globus_size_t * outstanding_commands,
553 globus_ftp_client_pipeline_callback_t * pipeline_callback,
554 void ** pipeline_arg);
558 globus_ftp_client_handleattr_t * attr,
559 globus_bool_t gridftp2);
562 globus_ftp_client_handleattr_get_gridftp2(
563 const globus_ftp_client_handleattr_t * attr,
564 globus_bool_t * gridftp2);
568 globus_ftp_client_handleattr_t * attr,
569 globus_netlogger_handle_t * nl_handle);
573 globus_ftp_client_handleattr_t * attr,
574 const char * app_name,
575 const char * app_version,
579 globus_ftp_client_handleattr_get_clientinfo(
580 globus_ftp_client_handleattr_t * attr,
586 globus_ftp_client_handleattr_set_netlogger_ftp_io(
587 globus_ftp_client_handleattr_t * attr,
588 globus_netlogger_handle_t * nl_handle,
593 globus_ftp_client_handleattr_remove_plugin(
594 globus_ftp_client_handleattr_t * attr,
595 globus_ftp_client_plugin_t * plugin);
599 globus_ftp_client_handleattr_t * attr,
600 globus_ftp_client_plugin_t * plugin);
615 globus_ftp_client_handle_t * u_handle,
618 globus_ftp_client_operationattr_t * attr,
620 void * callback_arg);
624 globus_ftp_client_handle_t * u_handle,
627 globus_ftp_client_operationattr_t * attr,
629 void * callback_arg);
633 globus_ftp_client_handle_t * u_handle,
635 const struct tm * utime_time,
636 globus_ftp_client_operationattr_t * attr,
638 void * callback_arg);
642 globus_ftp_client_handle_t * u_handle,
644 const char * link_url,
645 globus_ftp_client_operationattr_t * attr,
647 void * callback_arg);
651 globus_ftp_client_handle_t * handle,
653 globus_ftp_client_operationattr_t * attr,
657 const char * algorithm,
659 void * callback_arg);
663 globus_ftp_client_handle_t * handle,
665 globus_ftp_client_operationattr_t * attr,
667 void * callback_arg);
671 globus_ftp_client_handle_t * handle,
673 globus_ftp_client_operationattr_t * attr,
675 void * callback_arg);
679 globus_ftp_client_handle_t * handle,
681 globus_ftp_client_operationattr_t * attr,
683 void * callback_arg);
687 globus_ftp_client_handle_t * handle,
689 globus_ftp_client_operationattr_t * attr,
691 void * callback_arg);
695 globus_ftp_client_handle_t * handle,
697 globus_ftp_client_operationattr_t * attr,
699 void * callback_arg);
703 globus_ftp_client_handle_t * handle,
705 globus_ftp_client_operationattr_t * attr,
707 void * callback_arg);
711 globus_ftp_client_handle_t * handle,
713 globus_ftp_client_operationattr_t * attr,
715 void * callback_arg);
719 globus_ftp_client_handle_t * u_handle,
721 globus_ftp_client_operationattr_t * attr,
722 globus_byte_t ** mlst_buffer,
723 globus_size_t * mlst_buffer_length,
725 void * callback_arg);
729 globus_ftp_client_handle_t * u_handle,
731 globus_ftp_client_operationattr_t * attr,
732 globus_byte_t ** cwd_buffer,
733 globus_size_t * cwd_buffer_length,
735 void * callback_arg);
739 globus_ftp_client_handle_t * u_handle,
741 globus_ftp_client_operationattr_t * attr,
742 globus_byte_t ** stat_buffer,
743 globus_size_t * stat_buffer_length,
745 void * callback_arg);
749 globus_ftp_client_handle_t * handle,
750 const char * source_url,
751 const char * dest_url,
752 globus_ftp_client_operationattr_t * attr,
754 void * callback_arg);
758 globus_ftp_client_handle_t * handle,
760 globus_ftp_client_operationattr_t * attr,
763 void * callback_arg);
767 globus_ftp_client_handle_t * handle,
769 globus_ftp_client_operationattr_t * attr,
772 void * callback_arg);
776 globus_ftp_client_handle_t * handle,
777 const char * source_url,
778 globus_ftp_client_operationattr_t * source_attr,
779 const char * dest_url,
780 globus_ftp_client_operationattr_t * dest_attr,
783 void * callback_arg);
787 globus_ftp_client_handle_t * handle,
789 globus_ftp_client_operationattr_t * attr,
791 globus_off_t partial_offset,
792 globus_off_t partial_end_offset,
794 void * callback_arg);
798 globus_ftp_client_handle_t * handle,
800 globus_ftp_client_operationattr_t * attr,
802 globus_off_t partial_offset,
803 globus_off_t partial_end_offset,
805 void * callback_arg);
809 globus_ftp_client_handle_t * handle,
810 const char * source_url,
811 globus_ftp_client_operationattr_t * source_attr,
812 const char * dest_url,
813 globus_ftp_client_operationattr_t * dest_attr,
815 globus_off_t partial_offset,
816 globus_off_t partial_end_offset,
818 void * callback_arg);
822 globus_ftp_client_handle_t * handle,
824 globus_ftp_client_operationattr_t * attr,
826 const char * eret_alg_str,
828 void * callback_arg);
832 globus_ftp_client_handle_t * handle,
834 globus_ftp_client_operationattr_t * attr,
836 const char * esto_alg_str,
838 void * callback_arg);
842 globus_ftp_client_handle_t * handle,
843 const char * source_url,
844 globus_ftp_client_operationattr_t * source_attr,
845 const char * eret_alg_str,
846 const char * dest_url,
847 globus_ftp_client_operationattr_t * dest_attr,
848 const char * esto_alg_str,
851 void * callback_arg);
855 globus_ftp_client_handle_t * handle);
859 globus_ftp_client_handle_t * handle,
861 globus_ftp_client_operationattr_t * attr,
862 globus_abstime_t * modification_time,
864 void * callback_arg);
868 globus_ftp_client_handle_t * handle,
870 globus_ftp_client_operationattr_t * attr,
873 void * callback_arg);
877 globus_ftp_client_handle_t * handle,
879 globus_ftp_client_operationattr_t * attr,
881 void * callback_arg);
894 globus_ftp_client_operationattr_t * attr);
898 globus_ftp_client_operationattr_t * attr);
902 globus_ftp_client_operationattr_t * attr,
903 const globus_ftp_control_parallelism_t * parallelism);
906 globus_ftp_client_operationattr_get_parallelism(
907 const globus_ftp_client_operationattr_t * attr,
908 globus_ftp_control_parallelism_t * parallelism);
912 globus_ftp_client_operationattr_t * attr,
913 const char * module_name,
914 const char * module_args);
917 globus_ftp_client_operationattr_get_storage_module(
918 const globus_ftp_client_operationattr_t * attr,
920 char ** module_args);
924 globus_ftp_client_operationattr_t * attr,
925 const char * driver_list);
928 globus_ftp_client_operationattr_get_net_stack(
929 const globus_ftp_client_operationattr_t * attr,
930 char ** driver_list);
934 globus_ftp_client_operationattr_t * attr,
935 const char * driver_list);
938 globus_ftp_client_operationattr_get_disk_stack(
939 const globus_ftp_client_operationattr_t * attr,
940 char ** driver_list);
944 globus_ftp_client_operationattr_t * attr,
945 const char * authz_assert,
946 globus_bool_t cache_authz_assert);
949 globus_ftp_client_operationattr_get_authz_assert(
950 const globus_ftp_client_operationattr_t * attr,
951 char ** authz_assert,
952 globus_bool_t * cache_authz_assert);
956 globus_ftp_client_operationattr_t * attr,
957 globus_bool_t striped);
960 globus_ftp_client_operationattr_get_striped(
961 const globus_ftp_client_operationattr_t * attr,
962 globus_bool_t * striped);
966 globus_ftp_client_operationattr_t * attr,
967 const globus_ftp_control_layout_t * layout);
970 globus_ftp_client_operationattr_get_layout(
971 const globus_ftp_client_operationattr_t * attr,
972 globus_ftp_control_layout_t * layout);
976 globus_ftp_client_operationattr_t * attr,
977 const globus_ftp_control_tcpbuffer_t * tcp_buffer);
980 globus_ftp_client_operationattr_get_tcp_buffer(
981 const globus_ftp_client_operationattr_t * attr,
982 globus_ftp_control_tcpbuffer_t * tcp_buffer);
986 globus_ftp_client_operationattr_t * attr,
987 globus_ftp_control_type_t type);
990 globus_ftp_client_operationattr_get_type(
991 const globus_ftp_client_operationattr_t * attr,
992 globus_ftp_control_type_t * type);
996 globus_ftp_client_operationattr_t * attr,
997 globus_ftp_control_mode_t mode);
1000 globus_ftp_client_operationattr_get_mode(
1001 const globus_ftp_client_operationattr_t * attr,
1002 globus_ftp_control_mode_t * mode);
1006 const globus_ftp_client_operationattr_t * attr,
1007 globus_bool_t list_uses_data_mode);
1010 globus_ftp_client_operationattr_get_list_uses_data_mode(
1011 const globus_ftp_client_operationattr_t * attr,
1012 globus_bool_t * list_uses_data_mode);
1016 const globus_ftp_client_operationattr_t * attr,
1017 globus_bool_t delayed_pasv);
1020 globus_ftp_client_operationattr_get_delayed_pasv(
1021 const globus_ftp_client_operationattr_t * attr,
1022 globus_bool_t * delayed_pasv);
1026 globus_ftp_client_operationattr_t * attr,
1027 const globus_ftp_control_dcau_t * dcau);
1030 globus_ftp_client_operationattr_get_dcau(
1031 const globus_ftp_client_operationattr_t * attr,
1032 globus_ftp_control_dcau_t * dcau);
1036 globus_ftp_client_operationattr_t * attr,
1037 globus_ftp_control_protection_t protection);
1040 globus_ftp_client_operationattr_get_data_protection(
1041 const globus_ftp_client_operationattr_t * attr,
1042 globus_ftp_control_protection_t * protection);
1046 globus_ftp_client_operationattr_t * attr,
1047 globus_ftp_control_protection_t protection);
1050 globus_ftp_client_operationattr_get_control_protection(
1051 const globus_ftp_client_operationattr_t * attr,
1052 globus_ftp_control_protection_t * protection);
1056 globus_ftp_client_operationattr_t * attr,
1061 globus_ftp_client_operationattr_get_data_security(
1062 const globus_ftp_client_operationattr_t * attr,
1064 void ** credential);
1067 globus_ftp_client_operationattr_set_resume_third_party_transfer(
1068 globus_ftp_client_operationattr_t * attr,
1069 globus_bool_t resume);
1072 globus_ftp_client_operationattr_get_resume_third_party_transfer(
1073 const globus_ftp_client_operationattr_t * attr,
1074 globus_bool_t * resume);
1078 globus_ftp_client_operationattr_t * attr,
1079 gss_cred_id_t credential,
1081 const char * password,
1082 const char * account,
1083 const char * subject);
1086 globus_ftp_client_operationattr_get_authorization(
1087 const globus_ftp_client_operationattr_t * attr,
1088 gss_cred_id_t * credential,
1096 globus_ftp_client_operationattr_t * attr,
1097 globus_bool_t append);
1100 globus_ftp_client_operationattr_get_append(
1101 const globus_ftp_client_operationattr_t * attr,
1102 globus_bool_t * append);
1106 globus_ftp_client_operationattr_t * attr,
1107 globus_bool_t read_all,
1109 void * intermediate_callback_arg);
1112 globus_ftp_client_operationattr_get_read_all(
1113 const globus_ftp_client_operationattr_t * attr,
1114 globus_bool_t * read_all,
1116 void ** intermediate_callback_arg);
1120 globus_ftp_client_operationattr_t * attr,
1121 globus_bool_t allow);
1124 globus_ftp_client_operationattr_get_allow_ipv6(
1125 const globus_ftp_client_operationattr_t * attr,
1126 globus_bool_t * allow);
1130 globus_ftp_client_operationattr_t * attr,
1131 const globus_off_t allocated_size);
1134 globus_ftp_client_operationattr_get_allocate(
1135 const globus_ftp_client_operationattr_t * attr,
1136 globus_off_t * allocated_size);
1140 globus_ftp_client_operationattr_t * dst,
1141 const globus_ftp_client_operationattr_t * src);
1144 globus_ftp_client_operationattr_set_rfc1738_url(
1145 globus_ftp_client_operationattr_t * attr,
1146 globus_bool_t rfc1738_url);
1149 globus_ftp_client_operationattr_get_rfc1738_url(
1150 const globus_ftp_client_operationattr_t * attr,
1151 globus_bool_t * rfc1738_url);
1177 globus_ftp_client_handle_t * handle,
1178 globus_byte_t * buffer,
1179 globus_size_t buffer_length,
1181 void * callback_arg);
1185 globus_ftp_client_handle_t * handle,
1186 globus_byte_t * buffer,
1187 globus_size_t buffer_length,
1188 globus_off_t offset,
1191 void * callback_arg);
1202 GLOBUS_FTP_CLIENT_FALSE = GLOBUS_FALSE,
1203 GLOBUS_FTP_CLIENT_TRUE = GLOBUS_TRUE,
1204 GLOBUS_FTP_CLIENT_MAYBE
1217 GLOBUS_FTP_CLIENT_FEATURE_RETRBUFSIZE = 0,
1218 GLOBUS_FTP_CLIENT_FEATURE_RBUFSZ,
1219 GLOBUS_FTP_CLIENT_FEATURE_RBUFSIZ,
1220 GLOBUS_FTP_CLIENT_FEATURE_STORBUFSIZE,
1221 GLOBUS_FTP_CLIENT_FEATURE_SBUSSZ,
1222 GLOBUS_FTP_CLIENT_FEATURE_SBUFSIZ,
1223 GLOBUS_FTP_CLIENT_FEATURE_BUFSIZE,
1224 GLOBUS_FTP_CLIENT_FEATURE_SBUF,
1225 GLOBUS_FTP_CLIENT_FEATURE_ABUF,
1227 GLOBUS_FTP_CLIENT_FEATURE_REST_STREAM,
1228 GLOBUS_FTP_CLIENT_FEATURE_PARALLELISM,
1229 GLOBUS_FTP_CLIENT_FEATURE_DCAU,
1230 GLOBUS_FTP_CLIENT_FEATURE_DCSC,
1231 GLOBUS_FTP_CLIENT_FEATURE_ESTO,
1232 GLOBUS_FTP_CLIENT_FEATURE_ERET,
1233 GLOBUS_FTP_CLIENT_FEATURE_SIZE,
1234 GLOBUS_FTP_CLIENT_FEATURE_CKSM,
1235 GLOBUS_FTP_CLIENT_FEATURE_CHMOD,
1236 GLOBUS_FTP_CLIENT_FEATURE_AUTHZ_ASSERT,
1237 GLOBUS_FTP_CLIENT_FEATURE_CLIENTINFO,
1238 GLOBUS_FTP_CLIENT_FEATURE_SITE_SETNETSTACK,
1239 GLOBUS_FTP_CLIENT_FEATURE_DELAYED_PASV,
1240 GLOBUS_FTP_CLIENT_FEATURE_GETPUT,
1241 GLOBUS_FTP_CLIENT_FEATURE_MLST,
1242 GLOBUS_FTP_CLIENT_FEATURE_CHGRP,
1243 GLOBUS_FTP_CLIENT_FEATURE_UTIME,
1244 GLOBUS_FTP_CLIENT_FEATURE_SYMLINK,
1245 GLOBUS_FTP_CLIENT_FEATURE_MAX,
1246 GLOBUS_FTP_CLIENT_LAST_BUFFER_COMMAND = GLOBUS_FTP_CLIENT_FEATURE_ABUF,
1247 GLOBUS_FTP_CLIENT_FIRST_FEAT_FEATURE = GLOBUS_FTP_CLIENT_FEATURE_SBUF,
1248 GLOBUS_FTP_CLIENT_LAST_FEAT_FEATURE = GLOBUS_FTP_CLIENT_FEATURE_MLST
1265 globus_ftp_client_handle_t * u_handle,
1267 globus_ftp_client_operationattr_t * attr,
1268 globus_ftp_client_features_t * u_features,
1270 void * callback_arg);
1274 const globus_ftp_client_features_t * u_features,
1279 globus_ftp_client_features_t *);
1281 globus_ftp_client_features_t *);
1295 globus_error_ftp_error_get_code(
1296 globus_object_t * error);
1298 #define GLOBUS_ERROR_TYPE_FTP (&GLOBUS_ERROR_TYPE_FTP_DEFINITION)
1299 extern const globus_object_type_t GLOBUS_ERROR_TYPE_FTP_DEFINITION;