2 #ifndef GLOBUS_DONT_DOCUMENT_INTERNAL
9 #ifndef GLOBUS_I_FTP_CLIENT_H
10 #define GLOBUS_I_FTP_CLIENT_H
12 #include "globus_common.h"
15 #include "globus_error_string.h"
16 #include "globus_xio.h"
18 #define GLOBUS_L_FTP_CLIENT_SSH_EXEC_SCRIPT "gridftp-ssh"
20 #define GLOBUS_L_FTP_CLIENT_CLIENTINFO_APPNAME "libglobus_ftp_client"
27 #define globus_i_ftp_client_handle_lock(handle) \
28 printf("locking handle %p at %s:%d\n", (handle), __FILE__, __LINE__), \
29 globus_mutex_lock(&(handle)->mutex)
30 #define globus_i_ftp_client_handle_unlock(handle) \
31 printf("unlocking handle %p at %s:%d\n", (handle), __FILE__, __LINE__), \
32 globus_mutex_unlock(&(handle)->mutex)
33 #define globus_i_ftp_client_data_target_lock(data_target) \
34 printf("locking data_target %p at %s:%d\n", (data_target), __FILE__, __LINE__), \
35 globus_mutex_lock(&(data_target)->mutex)
36 #define globus_i_ftp_client_data_target_unlock(data_target) \
37 printf("unlocking data_target %p at %s:%d\n", (data_target), __FILE__, __LINE__), \
38 globus_mutex_unlock(&(data_target)->mutex)
40 #define globus_i_ftp_client_handle_lock(handle) \
41 globus_mutex_lock(&handle->mutex)
42 #define globus_i_ftp_client_handle_unlock(handle) \
43 globus_mutex_unlock(&handle->mutex)
44 #define globus_i_ftp_client_data_target_lock(data_target) \
45 globus_mutex_lock(&(data_target)->mutex)
46 #define globus_i_ftp_client_data_target_unlock(data_target) \
47 globus_mutex_unlock(&(data_target)->mutex)
55 #define GLOBUS_FTP_CLIENT_MAGIC_STRING "FTPClient-1.0"
58 #define GLOBUS_I_FTP_CLIENT_BAD_MAGIC(h) \
60 !strcmp(((*h))->magic, \
61 GLOBUS_FTP_CLIENT_MAGIC_STRING)))
63 #define GLOBUS_I_FTP_CLIENT_BAD_MAGIC(h) 0
66 extern int globus_i_ftp_client_debug_level;
69 #define globus_i_ftp_client_debug(Level) \
70 (globus_i_ftp_client_debug_level >= (Level))
72 #define globus_i_ftp_client_debug_printf(level, message) \
74 if (globus_i_ftp_client_debug(level)) \
76 globus_libc_fprintf message; \
80 #define globus_i_ftp_client_debug_states(level, handle) \
84 globus_i_ftp_client_debug_printf(level, (stderr, \
85 " handle state = %s\n" \
86 " source state = %s\n" \
87 " dest state = %s\n", \
88 globus_i_ftp_handle_state_to_string(handle->state), \
90 ? globus_i_ftp_target_state_to_string(handle->source->state) \
93 ? globus_i_ftp_target_state_to_string(handle->dest->state) \
98 globus_i_ftp_client_debug_printf(level, (stderr, "handle is null\n")); \
103 #define globus_i_ftp_client_debug_printf(level, message)
104 #define globus_i_ftp_client_debug_states(level, handle)
108 #define GLOBUS_I_FTP_CLIENT_NOOP_IDLE 15
118 globus_ftp_control_parallelism_t parallelism;
119 globus_bool_t force_striped;
120 globus_ftp_control_layout_t layout;
121 globus_ftp_control_tcpbuffer_t buffer;
122 globus_bool_t using_default_auth;
123 globus_ftp_control_auth_info_t auth_info;
124 globus_ftp_control_type_t type;
125 globus_ftp_control_mode_t mode;
126 globus_bool_t list_uses_data_mode;
127 globus_bool_t append;
128 globus_ftp_control_dcau_t dcau;
129 globus_ftp_control_protection_t data_prot;
130 globus_bool_t resume_third_party;
131 globus_bool_t read_all;
133 void * read_all_intermediate_callback_arg;
134 globus_bool_t allow_ipv6;
135 globus_off_t allocated_size;
136 globus_bool_t cwd_first;
138 globus_bool_t cache_authz_assert;
139 globus_bool_t delayed_pasv;
140 char * net_stack_str;
141 char * disk_stack_str;
142 char * module_alg_str;
143 char * clientinfo_argstr;
146 gss_cred_id_t dcsc_p_cred;
218 globus_size_t outstanding_commands;
219 globus_ftp_client_pipeline_callback_t pipeline_callback;
221 globus_bool_t pipeline_done;
226 globus_bool_t nl_ftp;
228 globus_netlogger_handle_t * nl_handle;
231 char * clientinfo_app_name;
232 char * clientinfo_app_ver;
233 char * clientinfo_other;
243 GLOBUS_FTP_CLIENT_HANDLE_START,
244 GLOBUS_FTP_CLIENT_HANDLE_SOURCE_CONNECT,
245 GLOBUS_FTP_CLIENT_HANDLE_SOURCE_SETUP_CONNECTION,
246 GLOBUS_FTP_CLIENT_HANDLE_SOURCE_LIST,
247 GLOBUS_FTP_CLIENT_HANDLE_SOURCE_RETR_OR_ERET,
248 GLOBUS_FTP_CLIENT_HANDLE_DEST_CONNECT,
249 GLOBUS_FTP_CLIENT_HANDLE_DEST_SETUP_CONNECTION,
250 GLOBUS_FTP_CLIENT_HANDLE_DEST_STOR_OR_ESTO,
251 GLOBUS_FTP_CLIENT_HANDLE_ABORT,
252 GLOBUS_FTP_CLIENT_HANDLE_RESTART,
253 GLOBUS_FTP_CLIENT_HANDLE_FAILURE,
258 GLOBUS_FTP_CLIENT_HANDLE_THIRD_PARTY_TRANSFER,
259 GLOBUS_FTP_CLIENT_HANDLE_THIRD_PARTY_TRANSFER_ONE_COMPLETE,
260 GLOBUS_FTP_CLIENT_HANDLE_FINALIZE
262 globus_ftp_client_handle_state_t;
269 GLOBUS_FTP_CLIENT_IDLE,
270 GLOBUS_FTP_CLIENT_CHMOD,
271 GLOBUS_FTP_CLIENT_CHGRP,
272 GLOBUS_FTP_CLIENT_UTIME,
273 GLOBUS_FTP_CLIENT_SYMLINK,
274 GLOBUS_FTP_CLIENT_DELETE,
275 GLOBUS_FTP_CLIENT_MKDIR,
276 GLOBUS_FTP_CLIENT_RMDIR,
277 GLOBUS_FTP_CLIENT_MOVE,
278 GLOBUS_FTP_CLIENT_LIST,
279 GLOBUS_FTP_CLIENT_NLST,
280 GLOBUS_FTP_CLIENT_MLSD,
281 GLOBUS_FTP_CLIENT_MLSR,
282 GLOBUS_FTP_CLIENT_MLST,
283 GLOBUS_FTP_CLIENT_STAT,
284 GLOBUS_FTP_CLIENT_GET,
285 GLOBUS_FTP_CLIENT_PUT,
286 GLOBUS_FTP_CLIENT_TRANSFER,
287 GLOBUS_FTP_CLIENT_MDTM,
288 GLOBUS_FTP_CLIENT_SIZE,
289 GLOBUS_FTP_CLIENT_CKSM,
290 GLOBUS_FTP_CLIENT_FEAT,
291 GLOBUS_FTP_CLIENT_CWD
293 globus_i_ftp_client_operation_t;
297 GLOBUS_FTP_CLIENT_TARGET_START,
298 GLOBUS_FTP_CLIENT_TARGET_CONNECT,
299 GLOBUS_FTP_CLIENT_TARGET_AUTHENTICATE,
300 GLOBUS_FTP_CLIENT_TARGET_SETUP_SITE_FAULT,
301 GLOBUS_FTP_CLIENT_TARGET_SITE_FAULT,
302 GLOBUS_FTP_CLIENT_TARGET_SETUP_SITE_HELP,
303 GLOBUS_FTP_CLIENT_TARGET_SITE_HELP,
304 GLOBUS_FTP_CLIENT_TARGET_FEAT,
305 GLOBUS_FTP_CLIENT_TARGET_SETUP_CONNECTION,
306 GLOBUS_FTP_CLIENT_TARGET_SETUP_CLIENTINFO,
307 GLOBUS_FTP_CLIENT_TARGET_CLIENTINFO,
308 GLOBUS_FTP_CLIENT_TARGET_SETUP_TYPE,
309 GLOBUS_FTP_CLIENT_TARGET_TYPE,
310 GLOBUS_FTP_CLIENT_TARGET_SETUP_MODE,
311 GLOBUS_FTP_CLIENT_TARGET_MODE,
312 GLOBUS_FTP_CLIENT_TARGET_SETUP_SIZE,
313 GLOBUS_FTP_CLIENT_TARGET_SIZE,
314 GLOBUS_FTP_CLIENT_TARGET_SETUP_CKSM,
315 GLOBUS_FTP_CLIENT_TARGET_CKSM,
316 GLOBUS_FTP_CLIENT_TARGET_SETUP_DCSC,
317 GLOBUS_FTP_CLIENT_TARGET_DCSC,
318 GLOBUS_FTP_CLIENT_TARGET_SETUP_DCAU,
319 GLOBUS_FTP_CLIENT_TARGET_DCAU,
320 GLOBUS_FTP_CLIENT_TARGET_SETUP_PBSZ,
321 GLOBUS_FTP_CLIENT_TARGET_PBSZ,
322 GLOBUS_FTP_CLIENT_TARGET_SETUP_PROT,
323 GLOBUS_FTP_CLIENT_TARGET_PROT,
324 GLOBUS_FTP_CLIENT_TARGET_SETUP_BUFSIZE,
325 GLOBUS_FTP_CLIENT_TARGET_BUFSIZE,
326 GLOBUS_FTP_CLIENT_TARGET_SETUP_REMOTE_RETR_OPTS,
327 GLOBUS_FTP_CLIENT_TARGET_REMOTE_RETR_OPTS,
328 GLOBUS_FTP_CLIENT_TARGET_SETUP_LOCAL_RETR_OPTS,
329 GLOBUS_FTP_CLIENT_TARGET_LOCAL_RETR_OPTS,
330 GLOBUS_FTP_CLIENT_TARGET_OPTS_PASV_DELAYED,
331 GLOBUS_FTP_CLIENT_TARGET_SETUP_PASV,
332 GLOBUS_FTP_CLIENT_TARGET_PASV,
333 GLOBUS_FTP_CLIENT_TARGET_SETUP_PORT,
334 GLOBUS_FTP_CLIENT_TARGET_PORT,
335 GLOBUS_FTP_CLIENT_TARGET_SETUP_AUTHZ_ASSERT,
336 GLOBUS_FTP_CLIENT_TARGET_AUTHZ_ASSERT,
337 GLOBUS_FTP_CLIENT_TARGET_SETUP_SETNETSTACK,
338 GLOBUS_FTP_CLIENT_TARGET_SETNETSTACK,
339 GLOBUS_FTP_CLIENT_TARGET_SETUP_SETDISKSTACK,
340 GLOBUS_FTP_CLIENT_TARGET_SETDISKSTACK,
341 GLOBUS_FTP_CLIENT_TARGET_SETUP_ALLO,
342 GLOBUS_FTP_CLIENT_TARGET_ALLO,
343 GLOBUS_FTP_CLIENT_TARGET_SETUP_REST_STREAM,
344 GLOBUS_FTP_CLIENT_TARGET_SETUP_REST_EB,
345 GLOBUS_FTP_CLIENT_TARGET_REST,
346 GLOBUS_FTP_CLIENT_TARGET_SETUP_OPERATION,
347 GLOBUS_FTP_CLIENT_TARGET_SETUP_LIST,
348 GLOBUS_FTP_CLIENT_TARGET_SETUP_LIST_CWD,
349 GLOBUS_FTP_CLIENT_TARGET_SETUP_GET,
350 GLOBUS_FTP_CLIENT_TARGET_SETUP_PUT,
351 GLOBUS_FTP_CLIENT_TARGET_SETUP_TRANSFER_SOURCE,
352 GLOBUS_FTP_CLIENT_TARGET_SETUP_TRANSFER_DEST,
353 GLOBUS_FTP_CLIENT_TARGET_SETUP_CHMOD,
354 GLOBUS_FTP_CLIENT_TARGET_SETUP_CHGRP,
355 GLOBUS_FTP_CLIENT_TARGET_SETUP_UTIME,
356 GLOBUS_FTP_CLIENT_TARGET_SETUP_SYMLINK,
357 GLOBUS_FTP_CLIENT_TARGET_SETUP_DELETE,
358 GLOBUS_FTP_CLIENT_TARGET_SETUP_MKDIR,
359 GLOBUS_FTP_CLIENT_TARGET_SETUP_RMDIR,
360 GLOBUS_FTP_CLIENT_TARGET_SETUP_RNFR,
361 GLOBUS_FTP_CLIENT_TARGET_SETUP_RNTO,
362 GLOBUS_FTP_CLIENT_TARGET_SETUP_MDTM,
363 GLOBUS_FTP_CLIENT_TARGET_SETUP_MLST,
364 GLOBUS_FTP_CLIENT_TARGET_SETUP_STAT,
365 GLOBUS_FTP_CLIENT_TARGET_SETUP_GETPUT_GET,
366 GLOBUS_FTP_CLIENT_TARGET_SETUP_GETPUT_PUT,
367 GLOBUS_FTP_CLIENT_TARGET_MLST,
368 GLOBUS_FTP_CLIENT_TARGET_STAT,
369 GLOBUS_FTP_CLIENT_TARGET_LIST,
370 GLOBUS_FTP_CLIENT_TARGET_RETR,
371 GLOBUS_FTP_CLIENT_TARGET_STOR,
372 GLOBUS_FTP_CLIENT_TARGET_MDTM,
373 GLOBUS_FTP_CLIENT_TARGET_GETPUT_PASV_GET,
374 GLOBUS_FTP_CLIENT_TARGET_GETPUT_PASV_PUT,
375 GLOBUS_FTP_CLIENT_TARGET_GETPUT_PASV_TRANSFER,
376 GLOBUS_FTP_CLIENT_TARGET_READY_FOR_DATA,
377 GLOBUS_FTP_CLIENT_TARGET_NEED_LAST_BLOCK,
378 GLOBUS_FTP_CLIENT_TARGET_NEED_EMPTY_QUEUE,
379 GLOBUS_FTP_CLIENT_TARGET_NEED_EMPTY_AND_COMPLETE,
380 GLOBUS_FTP_CLIENT_TARGET_NEED_COMPLETE,
381 GLOBUS_FTP_CLIENT_TARGET_COMPLETED_OPERATION,
382 GLOBUS_FTP_CLIENT_TARGET_NOOP,
383 GLOBUS_FTP_CLIENT_TARGET_FAULT,
384 GLOBUS_FTP_CLIENT_TARGET_CLOSED,
385 GLOBUS_FTP_CLIENT_TARGET_SETUP_CWD
387 globus_ftp_client_target_state_t;
390 typedef struct globus_i_ftp_client_url_ent_s
392 globus_i_ftp_client_operation_t op;
394 globus_url_t src_url;
396 globus_url_t dst_url;
398 } globus_i_ftp_client_url_ent_t;
443 globus_i_ftp_client_features_init();
446 globus_i_ftp_client_features_destroy(
450 globus_i_ftp_client_feature_get(
455 globus_i_ftp_client_feature_set(
461 globus_i_ftp_client_find_ssh_client_program();
534 globus_i_ftp_client_operation_t
op;
542 globus_ftp_client_handle_state_t
state;
583 globus_bool_t notify_abort;
584 globus_bool_t notify_restart;
619 globus_size_t * mlst_buffer_length_pointer;
638 globus_off_t checksum_length;
643 globus_fifo_t dst_op_queue;
644 globus_fifo_t src_response_pending_queue;
645 globus_fifo_t dst_response_pending_queue;
647 int no_callback_count;
649 globus_bool_t source_pasv;
650 globus_bool_t tried_both_pasv;
670 globus_ftp_client_target_state_t
state;
684 globus_ftp_control_dcau_t
dcau;
685 globus_ftp_control_protection_t data_prot;
687 globus_ftp_control_type_t type;
688 globus_ftp_control_tcpbuffer_t tcp_buffer;
689 globus_ftp_control_mode_t mode;
690 globus_ftp_control_structure_t structure;
691 globus_ftp_control_layout_t layout;
692 globus_ftp_control_parallelism_t parallelism;
694 char * net_stack_str;
695 char * disk_stack_str;
696 globus_bool_t delayed_pasv;
711 globus_abstime_t last_access;
713 globus_bool_t src_command_sent;
714 globus_bool_t dst_command_sent;
716 globus_list_t * net_stack_list;
718 char * clientinfo_argstr;
722 gss_cred_id_t dcsc_p_cred;
765 globus_abstime_t when;
766 globus_callback_handle_t callback_handle;
830 third_party_transfer_func;
833 modification_time_func;
865 globus_i_ftp_client_handleattr_copy(
870 globus_i_ftp_client_handleattr_destroy(
874 globus_i_ftp_client_plugin_list_search(
885 globus_i_ftp_client_control_is_active(globus_ftp_control_handle_t * handle);
888 globus_i_ftp_client_control_is_not_active(globus_ftp_control_handle_t * handle);
891 globus_i_ftp_op_to_string(
892 globus_i_ftp_client_operation_t op);
895 globus_i_ftp_target_state_to_string(
896 globus_ftp_client_target_state_t target_state);
899 globus_i_ftp_handle_state_to_string(
900 globus_ftp_client_handle_state_t handle_state);
903 globus_i_ftp_client_count_digits(
906 extern globus_ftp_control_auth_info_t globus_i_ftp_client_default_auth_info;
907 extern globus_reltime_t globus_i_ftp_client_noop_idle;
909 extern globus_xio_stack_t ftp_client_i_popen_stack;
910 extern globus_xio_driver_t ftp_client_i_popen_driver;
911 extern globus_bool_t ftp_client_i_popen_ready;
916 globus_i_ftp_client_target_find(
923 globus_i_ftp_client_target_release(
928 globus_i_ftp_client_restart_info_delete(
932 globus_i_ftp_client_can_reuse_data_conn(
936 globus_i_ftp_client_cache_add(
937 globus_list_t ** cache,
939 globus_bool_t rfc1738_url);
942 globus_i_ftp_client_cache_remove(
943 globus_list_t ** cache,
945 globus_bool_t rfc1738_url);
948 globus_i_ftp_client_cache_destroy(
949 globus_list_t ** cache);
953 globus_i_ftp_client_data_cmp(
958 globus_i_ftp_client_data_dispatch_queue(
962 globus_i_ftp_client_data_flush(
967 globus_i_ftp_client_transfer_complete(
971 globus_i_ftp_client_restart(
978 globus_i_ftp_client_plugin_notify_list(
984 globus_i_ftp_client_plugin_notify_verbose_list(
990 globus_i_ftp_client_plugin_notify_machine_list(
996 globus_i_ftp_client_plugin_notify_recursive_list(
1002 globus_i_ftp_client_plugin_notify_mlst(
1008 globus_i_ftp_client_plugin_notify_stat(
1014 globus_i_ftp_client_plugin_notify_chmod(
1021 globus_i_ftp_client_plugin_notify_chgrp(
1028 globus_i_ftp_client_plugin_notify_utime(
1031 const struct tm * utime_time,
1035 globus_i_ftp_client_plugin_notify_symlink(
1038 const char * link_url,
1042 globus_i_ftp_client_plugin_notify_cksm(
1045 globus_off_t offset,
1046 globus_off_t length,
1047 const char * algorithm,
1051 globus_i_ftp_client_plugin_notify_delete(
1057 globus_i_ftp_client_plugin_notify_feat(
1063 globus_i_ftp_client_plugin_notify_mkdir(
1069 globus_i_ftp_client_plugin_notify_rmdir(
1075 globus_i_ftp_client_plugin_notify_move(
1077 const char * source_url,
1078 const char * dest_url,
1082 globus_i_ftp_client_plugin_notify_get(
1089 globus_i_ftp_client_plugin_notify_put(
1096 globus_i_ftp_client_plugin_notify_transfer(
1098 const char * source_url,
1100 const char * dest_url,
1105 globus_i_ftp_client_plugin_notify_modification_time(
1111 globus_i_ftp_client_plugin_notify_size(
1117 globus_i_ftp_client_plugin_notify_restart(
1121 globus_i_ftp_client_plugin_notify_connect(
1126 globus_i_ftp_client_plugin_notify_authenticate(
1129 const globus_ftp_control_auth_info_t * auth_info);
1132 globus_i_ftp_client_plugin_notify_abort(
1136 globus_i_ftp_client_plugin_notify_read(
1138 const globus_byte_t * buffer,
1139 globus_size_t buffer_length);
1142 globus_i_ftp_client_plugin_notify_write(
1144 const globus_byte_t * buffer,
1145 globus_size_t buffer_length,
1146 globus_off_t offset,
1150 globus_i_ftp_client_plugin_notify_data(
1152 globus_object_t * error,
1153 const globus_byte_t * buffer,
1154 globus_size_t buffer_length,
1155 globus_off_t offset,
1159 globus_i_ftp_client_plugin_notify_command(
1163 const char * command_spec,
1167 globus_i_ftp_client_plugin_notify_response(
1171 globus_object_t * error,
1172 const globus_ftp_control_response_t * ftp_response);
1175 globus_i_ftp_client_plugin_notify_fault(
1178 globus_object_t * error);
1181 globus_i_ftp_client_plugin_notify_complete(
1186 globus_i_ftp_client_restart_register_oneshot(
1192 globus_l_ftp_client_url_parse(
1193 const char * url_string,
1195 globus_bool_t rfc1738_url);
1198 globus_i_ftp_client_force_close_callback(
1200 globus_ftp_control_handle_t * handle,
1201 globus_object_t * error,
1202 globus_ftp_control_response_t * response);
1205 globus_i_ftp_client_target_activate(
1208 globus_bool_t * registered);
1212 globus_i_ftp_client_response_callback(
1214 globus_ftp_control_handle_t * handle,
1215 globus_object_t * error,
1216 globus_ftp_control_response_t * response);
1220 globus_l_ftp_client_complete_kickout(
1224 globus_i_ftp_client_wrap_ftp_error(
1225 globus_module_descriptor_t * base_source,
1227 const char * message,
1229 const char * source_file,
1230 const char * source_func,
1232 const char * format,
1236 #define GLOBUS_I_FTP_CLIENT_ERROR_NULL_PARAMETER(param) \
1237 globus_error_construct_error(\
1238 GLOBUS_FTP_CLIENT_MODULE,\
1240 GLOBUS_FTP_CLIENT_ERROR_PARAMETER, \
1242 _globus_func_name, \
1244 "a NULL value for %s was used", param)
1245 #define GLOBUS_I_FTP_CLIENT_ERROR_INVALID_PARAMETER(param) \
1246 globus_error_construct_error(\
1247 GLOBUS_FTP_CLIENT_MODULE,\
1249 GLOBUS_FTP_CLIENT_ERROR_PARAMETER, \
1251 _globus_func_name, \
1253 "an invalid value for %s was used", param)
1254 #define GLOBUS_I_FTP_CLIENT_ERROR_OUT_OF_MEMORY() \
1255 globus_error_construct_error(\
1256 GLOBUS_FTP_CLIENT_MODULE,\
1258 GLOBUS_FTP_CLIENT_ERROR_MEMORY, \
1260 _globus_func_name, \
1262 "a memory allocation failed")
1263 #define GLOBUS_I_FTP_CLIENT_ERROR_OPERATION_ABORTED() \
1264 globus_error_construct_error(\
1265 GLOBUS_FTP_CLIENT_MODULE,\
1267 GLOBUS_FTP_CLIENT_ERROR_ABORTED, \
1269 _globus_func_name, \
1271 "the operation was aborted")
1272 #define GLOBUS_I_FTP_CLIENT_ERROR_INTERNAL_ERROR(err) \
1273 globus_error_construct_error(\
1274 GLOBUS_FTP_CLIENT_MODULE,\
1276 GLOBUS_FTP_CLIENT_ERROR_INTERNAL, \
1278 _globus_func_name, \
1280 "an internal error occurred in globus_ftp_client")
1281 #define GLOBUS_I_FTP_CLIENT_ERROR_OBJECT_IN_USE(obj) \
1282 globus_error_construct_error(\
1283 GLOBUS_FTP_CLIENT_MODULE,\
1285 GLOBUS_FTP_CLIENT_ERROR_IN_USE, \
1287 _globus_func_name, \
1289 "%s was already in use", obj)
1290 #define GLOBUS_I_FTP_CLIENT_ERROR_OBJECT_NOT_IN_USE(obj) \
1291 globus_error_construct_error(\
1292 GLOBUS_FTP_CLIENT_MODULE,\
1294 GLOBUS_FTP_CLIENT_ERROR_NOT_IN_USE, \
1296 _globus_func_name, \
1298 "%s was not in use", obj)
1299 #define GLOBUS_I_FTP_CLIENT_ERROR_ALREADY_DONE() \
1300 globus_error_construct_error(\
1301 GLOBUS_FTP_CLIENT_MODULE,\
1303 GLOBUS_FTP_CLIENT_ERROR_COMPLETED, \
1305 _globus_func_name, \
1308 #define GLOBUS_I_FTP_CLIENT_ERROR_INVALID_OPERATION(op) \
1309 globus_error_construct_error(\
1310 GLOBUS_FTP_CLIENT_MODULE,\
1312 GLOBUS_FTP_CLIENT_ERROR_INVALID_OPERATION, \
1314 _globus_func_name, \
1316 "%s not allowed here",\
1317 globus_i_ftp_op_to_string(op))
1318 #define GLOBUS_I_FTP_CLIENT_ERROR_EOF() \
1319 globus_error_construct_error(\
1320 GLOBUS_FTP_CLIENT_MODULE,\
1322 GLOBUS_FTP_CLIENT_ERROR_UNEXPECTED_EOF, \
1324 _globus_func_name, \
1326 "EOF has been reached")
1327 #define GLOBUS_I_FTP_CLIENT_ERROR_NO_SUCH_FILE(file) \
1328 globus_error_construct_error(\
1329 GLOBUS_FTP_CLIENT_MODULE,\
1331 GLOBUS_FTP_CLIENT_ERROR_NO_SUCH_FILE, \
1333 _globus_func_name, \
1335 "%s does not exist", file)
1336 #define GLOBUS_I_FTP_CLIENT_ERROR_PROTOCOL_ERROR() \
1337 globus_error_construct_error(\
1338 GLOBUS_FTP_CLIENT_MODULE,\
1340 GLOBUS_FTP_CLIENT_ERROR_PROTOCOL, \
1342 _globus_func_name, \
1344 "a protocol error occurred")
1345 #define GLOBUS_I_FTP_CLIENT_ERROR_RESPONSE(response) \
1346 globus_i_ftp_client_wrap_ftp_error( \
1347 GLOBUS_FTP_CLIENT_MODULE, \
1349 (char *) (response)->response_buffer, \
1350 GLOBUS_FTP_CLIENT_ERROR_RESPONSE, \
1352 _globus_func_name, \
1354 "the server responded with an error")
1355 #define GLOBUS_I_FTP_CLIENT_ERROR_UNSUPPORTED_FEATURE(feature) \
1356 globus_error_construct_error(\
1357 GLOBUS_FTP_CLIENT_MODULE,\
1359 GLOBUS_FTP_CLIENT_ERROR_FEATURE, \
1361 _globus_func_name, \
1363 "the server doesn't support the %s feature",\
1365 #define GLOBUS_I_FTP_CLIENT_NO_RESTART_MARKER() \
1366 globus_error_construct_error( \
1367 GLOBUS_FTP_CLIENT_MODULE, \
1369 GLOBUS_FTP_CLIENT_ERROR_NO_RESTART_MARKER, \
1371 _globus_func_name, \
1373 "Could not find restart info\n")
char magic[24]
Definition: globus_i_ftp_client.h:510
globus_priority_q_t stalled_blocks
Definition: globus_i_ftp_client.h:548
void(* globus_ftp_client_plugin_write_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const globus_byte_t *buffer, globus_size_t buffer_length, globus_off_t offset, globus_bool_t eof)
Definition: globus_ftp_client_plugin.h:1039
void(* globus_ftp_client_plugin_read_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const globus_byte_t *buffer, globus_size_t buffer_length)
Definition: globus_ftp_client_plugin.h:1008
globus_bool_t rfc1738_url
Definition: globus_i_ftp_client.h:193
char * url_string
Definition: globus_i_ftp_client.h:675
Restart information management.
Definition: globus_i_ftp_client.h:758
void(* globus_ftp_client_complete_callback_t)(void *user_arg, globus_ftp_client_handle_t *handle, globus_object_t *error)
Definition: globus_ftp_client.h:263
globus_ftp_client_handle_state_t state
Definition: globus_i_ftp_client.h:542
void(* globus_ftp_client_plugin_chmod_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, int mode, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Definition: globus_ftp_client_plugin.h:226
void(* globus_ftp_client_plugin_destroy_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific)
Definition: globus_ftp_client_plugin.h:132
globus_ftp_client_plugin_t * plugin
Definition: globus_i_ftp_client.h:801
void(* globus_ftp_client_plugin_get_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Definition: globus_ftp_client_plugin.h:814
void(* globus_ftp_client_plugin_response_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, globus_object_t *error, const globus_ftp_control_response_t *ftp_response)
Definition: globus_ftp_client_plugin.h:1138
globus_off_t offset
Definition: globus_i_ftp_client.h:165
globus_ftp_client_plugin_t *(* globus_ftp_client_plugin_copy_t)(globus_ftp_client_plugin_t *plugin_template, void *plugin_specific)
Definition: globus_ftp_client_plugin.h:115
FTP Client handle implementation.
Definition: globus_i_ftp_client.h:507
void(* globus_ftp_client_plugin_utime_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const struct tm *utime_time, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Definition: globus_ftp_client_plugin.h:302
globus_i_ftp_client_handle_t * owner
Definition: globus_i_ftp_client.h:702
globus_i_ftp_client_features_t * features
Definition: globus_i_ftp_client.h:682
Handle attributes.
Definition: globus_i_ftp_client.h:178
char * checksum
Definition: globus_i_ftp_client.h:634
FTP server features we are interested in.
Definition: globus_i_ftp_client.h:421
void * plugin_specific
Definition: globus_i_ftp_client.h:858
globus_bool_t gridftp2
Definition: globus_i_ftp_client.h:199
globus_i_ftp_client_operationattr_t * attr
Definition: globus_i_ftp_client.h:699
globus_i_ftp_client_target_t * target
Definition: globus_i_ftp_client.h:751
void(* globus_ftp_client_plugin_recursive_list_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Definition: globus_ftp_client_plugin.h:669
globus_byte_t ** mlst_buffer_pointer
Definition: globus_i_ftp_client.h:618
globus_ftp_client_plugin_command_mask_t mask
Definition: globus_i_ftp_client.h:708
void(* globus_ftp_client_plugin_abort_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle)
Definition: globus_ftp_client_plugin.h:984
int num_active_blocks
Definition: globus_i_ftp_client.h:559
void(* globus_ftp_client_plugin_chgrp_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const char *group, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Definition: globus_ftp_client_plugin.h:264
void(* globus_ftp_client_data_callback_t)(void *user_arg, globus_ftp_client_handle_t *handle, globus_object_t *error, globus_byte_t *buffer, globus_size_t length, globus_off_t offset, globus_bool_t eof)
Definition: globus_ftp_client.h:296
void(* globus_ftp_client_plugin_feat_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Definition: globus_ftp_client_plugin.h:457
void(* globus_ftp_client_plugin_verbose_list_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Definition: globus_ftp_client_plugin.h:599
void(* globus_ftp_client_plugin_modification_time_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Definition: globus_ftp_client_plugin.h:925
globus_i_ftp_client_features_t * features_pointer
Definition: globus_i_ftp_client.h:615
globus_url_t url
Definition: globus_i_ftp_client.h:746
globus_ftp_client_tristate_t
Definition: globus_ftp_client.h:1185
globus_ftp_client_probed_feature_t
Definition: globus_ftp_client.h:1197
globus_ftp_control_handle_t * control_handle
Definition: globus_i_ftp_client.h:673
globus_mutex_t mutex
Definition: globus_i_ftp_client.h:631
globus_ftp_client_handle_t * handle
Definition: globus_i_ftp_client.h:513
globus_abstime_t * modification_time_pointer
Definition: globus_i_ftp_client.h:609
struct globus_i_ftp_client_target_s * dest
Definition: globus_i_ftp_client.h:487
globus_off_t read_all_biggest_offset
Definition: globus_i_ftp_client.h:606
struct tm utime_time
Definition: globus_i_ftp_client.h:628
void(* globus_ftp_client_plugin_put_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Definition: globus_ftp_client_plugin.h:849
Data connection caching information.
Definition: globus_i_ftp_client.h:476
Byte range report.This structure contains information about a single extent of data stored on an FTP ...
Definition: globus_i_ftp_client.h:160
void(* globus_ftp_client_plugin_symlink_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const char *utime_time, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Definition: globus_ftp_client_plugin.h:340
globus_bool_t cache_all
Definition: globus_i_ftp_client.h:187
void(* globus_ftp_client_plugin_move_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *source_url, const char *dest_url, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Definition: globus_ftp_client_plugin.h:778
globus_fifo_t src_op_queue
Definition: globus_i_ftp_client.h:642
globus_off_t checksum_offset
Definition: globus_i_ftp_client.h:637
The globus_i_ftp_client_operationattr_t is a pointer to this structure type.
Definition: globus_i_ftp_client.h:116
void(* globus_ftp_client_plugin_cksm_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, globus_off_t offset, globus_off_t length, const char *algorithm, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Definition: globus_ftp_client_plugin.h:384
globus_ftp_client_target_state_t state
Definition: globus_i_ftp_client.h:670
void(* globus_ftp_client_plugin_third_party_transfer_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *source_url, const globus_ftp_client_operationattr_t *source_attr, const char *dest_url, const globus_ftp_client_operationattr_t *dest_attr, globus_bool_t restart)
Definition: globus_ftp_client_plugin.h:888
void(* globus_ftp_client_plugin_machine_list_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Definition: globus_ftp_client_plugin.h:634
globus_ftp_client_plugin_command_mask_t
Definition: globus_ftp_client_plugin.h:55
char * source_url
Definition: globus_i_ftp_client.h:522
globus_hashtable_t active_blocks
Definition: globus_i_ftp_client.h:554
globus_off_t end_offset
Definition: globus_i_ftp_client.h:170
FTP Connection State.
Definition: globus_i_ftp_client.h:667
globus_off_t base_offset
Definition: globus_i_ftp_client.h:602
globus_i_ftp_client_data_target_t cached_data_conn
Definition: globus_i_ftp_client.h:705
globus_ftp_client_restart_marker_t restart_marker
Definition: globus_i_ftp_client.h:590
int notify_in_progress
Definition: globus_i_ftp_client.h:582
char * dest_url
Definition: globus_i_ftp_client.h:530
void(* globus_ftp_client_plugin_data_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, globus_object_t *error, const globus_byte_t *buffer, globus_size_t length, globus_off_t offset, globus_bool_t eof)
Definition: globus_ftp_client_plugin.h:1073
globus_off_t partial_offset
Definition: globus_i_ftp_client.h:593
globus_ftp_control_dcau_t dcau
Definition: globus_i_ftp_client.h:684
void(* globus_ftp_client_plugin_command_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const char *command)
Definition: globus_ftp_client_plugin.h:1105
void(* globus_ftp_client_plugin_complete_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle)
Definition: globus_ftp_client_plugin.h:1189
globus_ftp_client_plugin_copy_t copy_func
Definition: globus_i_ftp_client.h:806
struct globus_i_ftp_client_handle_t globus_i_ftp_client_handle_t
FTP Client handle implementation.
globus_i_ftp_client_operation_t operation
Definition: globus_i_ftp_client.h:491
void(* globus_ftp_client_plugin_delete_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Definition: globus_ftp_client_plugin.h:422
int chmod_file_mode
Definition: globus_i_ftp_client.h:622
globus_ftp_client_complete_callback_t callback
Definition: globus_i_ftp_client.h:537
void(* globus_ftp_client_plugin_mlst_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Definition: globus_ftp_client_plugin.h:704
void(* globus_ftp_client_plugin_rmdir_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Definition: globus_ftp_client_plugin.h:528
globus_off_t source_size
Definition: globus_i_ftp_client.h:587
globus_ftp_control_host_port_t * pasv_address
Definition: globus_i_ftp_client.h:564
globus_object_t * err
Definition: globus_i_ftp_client.h:572
void * callback_arg
Definition: globus_i_ftp_client.h:539
globus_url_t url
Definition: globus_i_ftp_client.h:677
struct globus_i_ftp_client_restart_s * restart_info
Definition: globus_i_ftp_client.h:577
void * user_pointer
Definition: globus_i_ftp_client.h:655
globus_off_t * size_pointer
Definition: globus_i_ftp_client.h:612
globus_ftp_client_plugin_destroy_t destroy_func
Definition: globus_i_ftp_client.h:810
char * chgrp_group
Definition: globus_i_ftp_client.h:625
int num_pasv_addresses
Definition: globus_i_ftp_client.h:569
globus_ftp_client_plugin_command_mask_t command_mask
Definition: globus_i_ftp_client.h:855
struct globus_i_ftp_client_target_s * source
Definition: globus_i_ftp_client.h:519
struct globus_i_ftp_client_target_s * source
Definition: globus_i_ftp_client.h:482
void(* globus_ftp_client_plugin_size_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Definition: globus_ftp_client_plugin.h:960
void(* globus_ftp_client_plugin_stat_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Definition: globus_ftp_client_plugin.h:740
struct globus_i_ftp_client_plugin_t globus_i_ftp_client_plugin_t
FTP Client Plugin.Each plugin implementation should define a method for initializing one of these str...
FTP Client Plugin.Each plugin implementation should define a method for initializing one of these str...
Definition: globus_i_ftp_client.h:783
void(* globus_ftp_client_plugin_connect_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url)
Definition: globus_ftp_client_plugin.h:159
char * plugin_name
Definition: globus_i_ftp_client.h:795
Restart marker.This structure is may be either a stream mode transfer offset, or an extended block mo...
Definition: globus_ftp_client.h:205
struct globus_i_ftp_client_target_s * dest
Definition: globus_i_ftp_client.h:528
globus_off_t partial_end_offset
Definition: globus_i_ftp_client.h:596
globus_ftp_control_auth_info_t auth_info
Definition: globus_i_ftp_client.h:679
struct globus_i_ftp_client_handleattr_t globus_i_ftp_client_handleattr_t
Handle attributes.
globus_list_t * url_cache
Definition: globus_i_ftp_client.h:208
globus_list_t * plugins
Definition: globus_i_ftp_client.h:216
void(* globus_ftp_client_plugin_authenticate_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_control_auth_info_t *auth_info)
Definition: globus_ftp_client_plugin.h:190
void(* globus_ftp_client_plugin_mkdir_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Definition: globus_ftp_client_plugin.h:493
URL caching support structure.
Definition: globus_i_ftp_client.h:743
globus_i_ftp_client_operation_t op
Definition: globus_i_ftp_client.h:534
void(* globus_ftp_client_plugin_list_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Definition: globus_ftp_client_plugin.h:564
void(* globus_ftp_client_plugin_fault_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, globus_object_t *error)
Definition: globus_ftp_client_plugin.h:1165