17 #ifndef GLOBUS_DONT_DOCUMENT_INTERNAL
24 #ifndef GLOBUS_I_FTP_CLIENT_H
25 #define GLOBUS_I_FTP_CLIENT_H
31 #include "globus_xio.h"
33 #define GLOBUS_L_FTP_CLIENT_SSH_EXEC_SCRIPT "gridftp-ssh"
35 #define GLOBUS_L_FTP_CLIENT_CLIENTINFO_APPNAME "libglobus_ftp_client"
42 #define globus_i_ftp_client_handle_lock(handle) \
43 printf("locking handle %p at %s:%d\n", (handle), __FILE__, __LINE__), \
44 globus_mutex_lock(&(handle)->mutex)
45 #define globus_i_ftp_client_handle_unlock(handle) \
46 printf("unlocking handle %p at %s:%d\n", (handle), __FILE__, __LINE__), \
47 globus_mutex_unlock(&(handle)->mutex)
48 #define globus_i_ftp_client_data_target_lock(data_target) \
49 printf("locking data_target %p at %s:%d\n", (data_target), __FILE__, __LINE__), \
50 globus_mutex_lock(&(data_target)->mutex)
51 #define globus_i_ftp_client_data_target_unlock(data_target) \
52 printf("unlocking data_target %p at %s:%d\n", (data_target), __FILE__, __LINE__), \
53 globus_mutex_unlock(&(data_target)->mutex)
55 #define globus_i_ftp_client_handle_lock(handle) \
56 globus_mutex_lock(&handle->mutex)
57 #define globus_i_ftp_client_handle_unlock(handle) \
58 globus_mutex_unlock(&handle->mutex)
59 #define globus_i_ftp_client_data_target_lock(data_target) \
60 globus_mutex_lock(&(data_target)->mutex)
61 #define globus_i_ftp_client_data_target_unlock(data_target) \
62 globus_mutex_unlock(&(data_target)->mutex)
70 #define GLOBUS_FTP_CLIENT_MAGIC_STRING "FTPClient-1.0"
73 #define GLOBUS_I_FTP_CLIENT_BAD_MAGIC(h) \
75 !strcmp(((*h))->magic, \
76 GLOBUS_FTP_CLIENT_MAGIC_STRING)))
78 #define GLOBUS_I_FTP_CLIENT_BAD_MAGIC(h) 0
81 extern int globus_i_ftp_client_debug_level;
84 #define globus_i_ftp_client_debug(Level) \
85 (globus_i_ftp_client_debug_level >= (Level))
87 #define globus_i_ftp_client_debug_printf(level, message) \
89 if (globus_i_ftp_client_debug(level)) \
91 globus_libc_fprintf message; \
95 #define globus_i_ftp_client_debug_states(level, handle) \
99 globus_i_ftp_client_debug_printf(level, (stderr, \
100 " handle state = %s\n" \
101 " source state = %s\n" \
102 " dest state = %s\n", \
103 globus_i_ftp_handle_state_to_string(handle->state), \
105 ? globus_i_ftp_target_state_to_string(handle->source->state) \
108 ? globus_i_ftp_target_state_to_string(handle->dest->state) \
113 globus_i_ftp_client_debug_printf(level, (stderr, "handle is null\n")); \
118 #define globus_i_ftp_client_debug_printf(level, message)
119 #define globus_i_ftp_client_debug_states(level, handle)
123 #define GLOBUS_I_FTP_CLIENT_NOOP_IDLE 15
148 void * read_all_intermediate_callback_arg;
150 globus_off_t allocated_size;
155 char * net_stack_str;
156 char * disk_stack_str;
157 char * module_alg_str;
158 char * clientinfo_argstr;
161 gss_cred_id_t dcsc_p_cred;
234 globus_ftp_client_pipeline_callback_t pipeline_callback;
243 globus_netlogger_handle_t * nl_handle;
246 char * clientinfo_app_name;
247 char * clientinfo_app_ver;
248 char * clientinfo_other;
258 GLOBUS_FTP_CLIENT_HANDLE_START,
259 GLOBUS_FTP_CLIENT_HANDLE_SOURCE_CONNECT,
260 GLOBUS_FTP_CLIENT_HANDLE_SOURCE_SETUP_CONNECTION,
261 GLOBUS_FTP_CLIENT_HANDLE_SOURCE_LIST,
262 GLOBUS_FTP_CLIENT_HANDLE_SOURCE_RETR_OR_ERET,
263 GLOBUS_FTP_CLIENT_HANDLE_DEST_CONNECT,
264 GLOBUS_FTP_CLIENT_HANDLE_DEST_SETUP_CONNECTION,
265 GLOBUS_FTP_CLIENT_HANDLE_DEST_STOR_OR_ESTO,
266 GLOBUS_FTP_CLIENT_HANDLE_ABORT,
267 GLOBUS_FTP_CLIENT_HANDLE_RESTART,
268 GLOBUS_FTP_CLIENT_HANDLE_FAILURE,
273 GLOBUS_FTP_CLIENT_HANDLE_THIRD_PARTY_TRANSFER,
274 GLOBUS_FTP_CLIENT_HANDLE_THIRD_PARTY_TRANSFER_ONE_COMPLETE,
275 GLOBUS_FTP_CLIENT_HANDLE_FINALIZE
277 globus_ftp_client_handle_state_t;
284 GLOBUS_FTP_CLIENT_IDLE,
285 GLOBUS_FTP_CLIENT_CHMOD,
286 GLOBUS_FTP_CLIENT_CHGRP,
287 GLOBUS_FTP_CLIENT_UTIME,
288 GLOBUS_FTP_CLIENT_SYMLINK,
289 GLOBUS_FTP_CLIENT_DELETE,
290 GLOBUS_FTP_CLIENT_MKDIR,
291 GLOBUS_FTP_CLIENT_RMDIR,
292 GLOBUS_FTP_CLIENT_MOVE,
293 GLOBUS_FTP_CLIENT_LIST,
294 GLOBUS_FTP_CLIENT_NLST,
295 GLOBUS_FTP_CLIENT_MLSD,
296 GLOBUS_FTP_CLIENT_MLSR,
297 GLOBUS_FTP_CLIENT_MLST,
298 GLOBUS_FTP_CLIENT_STAT,
299 GLOBUS_FTP_CLIENT_GET,
300 GLOBUS_FTP_CLIENT_PUT,
301 GLOBUS_FTP_CLIENT_TRANSFER,
302 GLOBUS_FTP_CLIENT_MDTM,
303 GLOBUS_FTP_CLIENT_SIZE,
304 GLOBUS_FTP_CLIENT_CKSM,
305 GLOBUS_FTP_CLIENT_FEAT,
306 GLOBUS_FTP_CLIENT_CWD
308 globus_i_ftp_client_operation_t;
312 GLOBUS_FTP_CLIENT_TARGET_START,
313 GLOBUS_FTP_CLIENT_TARGET_CONNECT,
314 GLOBUS_FTP_CLIENT_TARGET_AUTHENTICATE,
315 GLOBUS_FTP_CLIENT_TARGET_SETUP_SITE_FAULT,
316 GLOBUS_FTP_CLIENT_TARGET_SITE_FAULT,
317 GLOBUS_FTP_CLIENT_TARGET_SETUP_SITE_HELP,
318 GLOBUS_FTP_CLIENT_TARGET_SITE_HELP,
319 GLOBUS_FTP_CLIENT_TARGET_FEAT,
320 GLOBUS_FTP_CLIENT_TARGET_SETUP_CONNECTION,
321 GLOBUS_FTP_CLIENT_TARGET_SETUP_CLIENTINFO,
322 GLOBUS_FTP_CLIENT_TARGET_CLIENTINFO,
323 GLOBUS_FTP_CLIENT_TARGET_SETUP_TYPE,
324 GLOBUS_FTP_CLIENT_TARGET_TYPE,
325 GLOBUS_FTP_CLIENT_TARGET_SETUP_MODE,
326 GLOBUS_FTP_CLIENT_TARGET_MODE,
327 GLOBUS_FTP_CLIENT_TARGET_SETUP_SIZE,
328 GLOBUS_FTP_CLIENT_TARGET_SIZE,
329 GLOBUS_FTP_CLIENT_TARGET_SETUP_CKSM,
330 GLOBUS_FTP_CLIENT_TARGET_CKSM,
331 GLOBUS_FTP_CLIENT_TARGET_SETUP_DCSC,
332 GLOBUS_FTP_CLIENT_TARGET_DCSC,
333 GLOBUS_FTP_CLIENT_TARGET_SETUP_DCAU,
334 GLOBUS_FTP_CLIENT_TARGET_DCAU,
335 GLOBUS_FTP_CLIENT_TARGET_SETUP_PBSZ,
336 GLOBUS_FTP_CLIENT_TARGET_PBSZ,
337 GLOBUS_FTP_CLIENT_TARGET_SETUP_PROT,
338 GLOBUS_FTP_CLIENT_TARGET_PROT,
339 GLOBUS_FTP_CLIENT_TARGET_SETUP_BUFSIZE,
340 GLOBUS_FTP_CLIENT_TARGET_BUFSIZE,
341 GLOBUS_FTP_CLIENT_TARGET_SETUP_REMOTE_RETR_OPTS,
342 GLOBUS_FTP_CLIENT_TARGET_REMOTE_RETR_OPTS,
343 GLOBUS_FTP_CLIENT_TARGET_SETUP_LOCAL_RETR_OPTS,
344 GLOBUS_FTP_CLIENT_TARGET_LOCAL_RETR_OPTS,
345 GLOBUS_FTP_CLIENT_TARGET_OPTS_PASV_DELAYED,
346 GLOBUS_FTP_CLIENT_TARGET_SETUP_PASV,
347 GLOBUS_FTP_CLIENT_TARGET_PASV,
348 GLOBUS_FTP_CLIENT_TARGET_SETUP_PORT,
349 GLOBUS_FTP_CLIENT_TARGET_PORT,
350 GLOBUS_FTP_CLIENT_TARGET_SETUP_AUTHZ_ASSERT,
351 GLOBUS_FTP_CLIENT_TARGET_AUTHZ_ASSERT,
352 GLOBUS_FTP_CLIENT_TARGET_SETUP_SETNETSTACK,
353 GLOBUS_FTP_CLIENT_TARGET_SETNETSTACK,
354 GLOBUS_FTP_CLIENT_TARGET_SETUP_SETDISKSTACK,
355 GLOBUS_FTP_CLIENT_TARGET_SETDISKSTACK,
356 GLOBUS_FTP_CLIENT_TARGET_SETUP_ALLO,
357 GLOBUS_FTP_CLIENT_TARGET_ALLO,
358 GLOBUS_FTP_CLIENT_TARGET_SETUP_REST_STREAM,
359 GLOBUS_FTP_CLIENT_TARGET_SETUP_REST_EB,
360 GLOBUS_FTP_CLIENT_TARGET_REST,
361 GLOBUS_FTP_CLIENT_TARGET_SETUP_OPERATION,
362 GLOBUS_FTP_CLIENT_TARGET_SETUP_LIST,
363 GLOBUS_FTP_CLIENT_TARGET_SETUP_LIST_CWD,
364 GLOBUS_FTP_CLIENT_TARGET_SETUP_GET,
365 GLOBUS_FTP_CLIENT_TARGET_SETUP_PUT,
366 GLOBUS_FTP_CLIENT_TARGET_SETUP_TRANSFER_SOURCE,
367 GLOBUS_FTP_CLIENT_TARGET_SETUP_TRANSFER_DEST,
368 GLOBUS_FTP_CLIENT_TARGET_SETUP_CHMOD,
369 GLOBUS_FTP_CLIENT_TARGET_SETUP_CHGRP,
370 GLOBUS_FTP_CLIENT_TARGET_SETUP_UTIME,
371 GLOBUS_FTP_CLIENT_TARGET_SETUP_SYMLINK,
372 GLOBUS_FTP_CLIENT_TARGET_SETUP_DELETE,
373 GLOBUS_FTP_CLIENT_TARGET_SETUP_MKDIR,
374 GLOBUS_FTP_CLIENT_TARGET_SETUP_RMDIR,
375 GLOBUS_FTP_CLIENT_TARGET_SETUP_RNFR,
376 GLOBUS_FTP_CLIENT_TARGET_SETUP_RNTO,
377 GLOBUS_FTP_CLIENT_TARGET_SETUP_MDTM,
378 GLOBUS_FTP_CLIENT_TARGET_SETUP_MLST,
379 GLOBUS_FTP_CLIENT_TARGET_SETUP_STAT,
380 GLOBUS_FTP_CLIENT_TARGET_SETUP_GETPUT_GET,
381 GLOBUS_FTP_CLIENT_TARGET_SETUP_GETPUT_PUT,
382 GLOBUS_FTP_CLIENT_TARGET_MLST,
383 GLOBUS_FTP_CLIENT_TARGET_STAT,
384 GLOBUS_FTP_CLIENT_TARGET_LIST,
385 GLOBUS_FTP_CLIENT_TARGET_RETR,
386 GLOBUS_FTP_CLIENT_TARGET_STOR,
387 GLOBUS_FTP_CLIENT_TARGET_MDTM,
388 GLOBUS_FTP_CLIENT_TARGET_GETPUT_PASV_GET,
389 GLOBUS_FTP_CLIENT_TARGET_GETPUT_PASV_PUT,
390 GLOBUS_FTP_CLIENT_TARGET_GETPUT_PASV_TRANSFER,
391 GLOBUS_FTP_CLIENT_TARGET_READY_FOR_DATA,
392 GLOBUS_FTP_CLIENT_TARGET_NEED_LAST_BLOCK,
393 GLOBUS_FTP_CLIENT_TARGET_NEED_EMPTY_QUEUE,
394 GLOBUS_FTP_CLIENT_TARGET_NEED_EMPTY_AND_COMPLETE,
395 GLOBUS_FTP_CLIENT_TARGET_NEED_COMPLETE,
396 GLOBUS_FTP_CLIENT_TARGET_COMPLETED_OPERATION,
397 GLOBUS_FTP_CLIENT_TARGET_NOOP,
398 GLOBUS_FTP_CLIENT_TARGET_FAULT,
399 GLOBUS_FTP_CLIENT_TARGET_CLOSED,
400 GLOBUS_FTP_CLIENT_TARGET_SETUP_CWD
402 globus_ftp_client_target_state_t;
405 typedef struct globus_i_ftp_client_url_ent_s
407 globus_i_ftp_client_operation_t op;
413 } globus_i_ftp_client_url_ent_t;
458 globus_i_ftp_client_features_init();
461 globus_i_ftp_client_features_destroy(
465 globus_i_ftp_client_feature_get(
470 globus_i_ftp_client_feature_set(
476 globus_i_ftp_client_find_ssh_client_program();
549 globus_i_ftp_client_operation_t
op;
557 globus_ftp_client_handle_state_t
state;
653 globus_off_t checksum_length;
662 int no_callback_count;
685 globus_ftp_client_target_state_t
state;
709 char * net_stack_str;
710 char * disk_stack_str;
726 globus_abstime_t last_access;
733 char * clientinfo_argstr;
737 gss_cred_id_t dcsc_p_cred;
780 globus_abstime_t when;
845 third_party_transfer_func;
848 modification_time_func;
880 globus_i_ftp_client_handleattr_copy(
885 globus_i_ftp_client_handleattr_destroy(
889 globus_i_ftp_client_plugin_list_search(
900 globus_i_ftp_client_control_is_active(globus_ftp_control_handle_t * handle);
903 globus_i_ftp_client_control_is_not_active(globus_ftp_control_handle_t * handle);
906 globus_i_ftp_op_to_string(
907 globus_i_ftp_client_operation_t op);
910 globus_i_ftp_target_state_to_string(
911 globus_ftp_client_target_state_t target_state);
914 globus_i_ftp_handle_state_to_string(
915 globus_ftp_client_handle_state_t handle_state);
918 globus_i_ftp_client_count_digits(
922 extern globus_reltime_t globus_i_ftp_client_noop_idle;
924 extern globus_xio_stack_t ftp_client_i_popen_stack;
925 extern globus_xio_driver_t ftp_client_i_popen_driver;
931 globus_i_ftp_client_target_find(
938 globus_i_ftp_client_target_release(
943 globus_i_ftp_client_restart_info_delete(
947 globus_i_ftp_client_can_reuse_data_conn(
951 globus_i_ftp_client_cache_add(
957 globus_i_ftp_client_cache_remove(
963 globus_i_ftp_client_cache_destroy(
968 globus_i_ftp_client_data_cmp(
973 globus_i_ftp_client_data_dispatch_queue(
977 globus_i_ftp_client_data_flush(
982 globus_i_ftp_client_transfer_complete(
986 globus_i_ftp_client_restart(
993 globus_i_ftp_client_plugin_notify_list(
999 globus_i_ftp_client_plugin_notify_verbose_list(
1005 globus_i_ftp_client_plugin_notify_machine_list(
1011 globus_i_ftp_client_plugin_notify_recursive_list(
1017 globus_i_ftp_client_plugin_notify_mlst(
1023 globus_i_ftp_client_plugin_notify_stat(
1029 globus_i_ftp_client_plugin_notify_chmod(
1036 globus_i_ftp_client_plugin_notify_chgrp(
1043 globus_i_ftp_client_plugin_notify_utime(
1046 const struct tm * utime_time,
1050 globus_i_ftp_client_plugin_notify_symlink(
1053 const char * link_url,
1057 globus_i_ftp_client_plugin_notify_cksm(
1060 globus_off_t offset,
1061 globus_off_t length,
1062 const char * algorithm,
1066 globus_i_ftp_client_plugin_notify_delete(
1072 globus_i_ftp_client_plugin_notify_feat(
1078 globus_i_ftp_client_plugin_notify_mkdir(
1084 globus_i_ftp_client_plugin_notify_rmdir(
1090 globus_i_ftp_client_plugin_notify_move(
1092 const char * source_url,
1093 const char * dest_url,
1097 globus_i_ftp_client_plugin_notify_get(
1104 globus_i_ftp_client_plugin_notify_put(
1111 globus_i_ftp_client_plugin_notify_transfer(
1113 const char * source_url,
1115 const char * dest_url,
1120 globus_i_ftp_client_plugin_notify_modification_time(
1126 globus_i_ftp_client_plugin_notify_size(
1132 globus_i_ftp_client_plugin_notify_restart(
1136 globus_i_ftp_client_plugin_notify_connect(
1141 globus_i_ftp_client_plugin_notify_authenticate(
1147 globus_i_ftp_client_plugin_notify_abort(
1151 globus_i_ftp_client_plugin_notify_read(
1157 globus_i_ftp_client_plugin_notify_write(
1161 globus_off_t offset,
1165 globus_i_ftp_client_plugin_notify_data(
1167 globus_object_t * error,
1170 globus_off_t offset,
1174 globus_i_ftp_client_plugin_notify_command(
1178 const char * command_spec,
1182 globus_i_ftp_client_plugin_notify_response(
1186 globus_object_t * error,
1187 const globus_ftp_control_response_t * ftp_response);
1190 globus_i_ftp_client_plugin_notify_fault(
1193 globus_object_t * error);
1196 globus_i_ftp_client_plugin_notify_complete(
1201 globus_i_ftp_client_restart_register_oneshot(
1207 globus_l_ftp_client_url_parse(
1208 const char * url_string,
1213 globus_i_ftp_client_force_close_callback(
1215 globus_ftp_control_handle_t * handle,
1216 globus_object_t * error,
1217 globus_ftp_control_response_t * response);
1220 globus_i_ftp_client_target_activate(
1227 globus_i_ftp_client_response_callback(
1229 globus_ftp_control_handle_t * handle,
1230 globus_object_t * error,
1231 globus_ftp_control_response_t * response);
1235 globus_l_ftp_client_complete_kickout(
1239 globus_i_ftp_client_wrap_ftp_error(
1242 const char * message,
1244 const char * source_file,
1245 const char * source_func,
1247 const char * format,
1251 #define GLOBUS_I_FTP_CLIENT_ERROR_NULL_PARAMETER(param) \
1252 globus_error_construct_error(\
1253 GLOBUS_FTP_CLIENT_MODULE,\
1255 GLOBUS_FTP_CLIENT_ERROR_PARAMETER, \
1257 _globus_func_name, \
1259 "a NULL value for %s was used", param)
1260 #define GLOBUS_I_FTP_CLIENT_ERROR_INVALID_PARAMETER(param) \
1261 globus_error_construct_error(\
1262 GLOBUS_FTP_CLIENT_MODULE,\
1264 GLOBUS_FTP_CLIENT_ERROR_PARAMETER, \
1266 _globus_func_name, \
1268 "an invalid value for %s was used", param)
1269 #define GLOBUS_I_FTP_CLIENT_ERROR_OUT_OF_MEMORY() \
1270 globus_error_construct_error(\
1271 GLOBUS_FTP_CLIENT_MODULE,\
1273 GLOBUS_FTP_CLIENT_ERROR_MEMORY, \
1275 _globus_func_name, \
1277 "a memory allocation failed")
1278 #define GLOBUS_I_FTP_CLIENT_ERROR_OPERATION_ABORTED() \
1279 globus_error_construct_error(\
1280 GLOBUS_FTP_CLIENT_MODULE,\
1282 GLOBUS_FTP_CLIENT_ERROR_ABORTED, \
1284 _globus_func_name, \
1286 "the operation was aborted")
1287 #define GLOBUS_I_FTP_CLIENT_ERROR_INTERNAL_ERROR(err) \
1288 globus_error_construct_error(\
1289 GLOBUS_FTP_CLIENT_MODULE,\
1291 GLOBUS_FTP_CLIENT_ERROR_INTERNAL, \
1293 _globus_func_name, \
1295 "an internal error occurred in globus_ftp_client")
1296 #define GLOBUS_I_FTP_CLIENT_ERROR_OBJECT_IN_USE(obj) \
1297 globus_error_construct_error(\
1298 GLOBUS_FTP_CLIENT_MODULE,\
1300 GLOBUS_FTP_CLIENT_ERROR_IN_USE, \
1302 _globus_func_name, \
1304 "%s was already in use", obj)
1305 #define GLOBUS_I_FTP_CLIENT_ERROR_OBJECT_NOT_IN_USE(obj) \
1306 globus_error_construct_error(\
1307 GLOBUS_FTP_CLIENT_MODULE,\
1309 GLOBUS_FTP_CLIENT_ERROR_NOT_IN_USE, \
1311 _globus_func_name, \
1313 "%s was not in use", obj)
1314 #define GLOBUS_I_FTP_CLIENT_ERROR_ALREADY_DONE() \
1315 globus_error_construct_error(\
1316 GLOBUS_FTP_CLIENT_MODULE,\
1318 GLOBUS_FTP_CLIENT_ERROR_COMPLETED, \
1320 _globus_func_name, \
1323 #define GLOBUS_I_FTP_CLIENT_ERROR_INVALID_OPERATION(op) \
1324 globus_error_construct_error(\
1325 GLOBUS_FTP_CLIENT_MODULE,\
1327 GLOBUS_FTP_CLIENT_ERROR_INVALID_OPERATION, \
1329 _globus_func_name, \
1331 "%s not allowed here",\
1332 globus_i_ftp_op_to_string(op))
1333 #define GLOBUS_I_FTP_CLIENT_ERROR_EOF() \
1334 globus_error_construct_error(\
1335 GLOBUS_FTP_CLIENT_MODULE,\
1337 GLOBUS_FTP_CLIENT_ERROR_UNEXPECTED_EOF, \
1339 _globus_func_name, \
1341 "EOF has been reached")
1342 #define GLOBUS_I_FTP_CLIENT_ERROR_NO_SUCH_FILE(file) \
1343 globus_error_construct_error(\
1344 GLOBUS_FTP_CLIENT_MODULE,\
1346 GLOBUS_FTP_CLIENT_ERROR_NO_SUCH_FILE, \
1348 _globus_func_name, \
1350 "%s does not exist", file)
1351 #define GLOBUS_I_FTP_CLIENT_ERROR_PROTOCOL_ERROR() \
1352 globus_error_construct_error(\
1353 GLOBUS_FTP_CLIENT_MODULE,\
1355 GLOBUS_FTP_CLIENT_ERROR_PROTOCOL, \
1357 _globus_func_name, \
1359 "a protocol error occurred")
1360 #define GLOBUS_I_FTP_CLIENT_ERROR_RESPONSE(response) \
1361 globus_i_ftp_client_wrap_ftp_error( \
1362 GLOBUS_FTP_CLIENT_MODULE, \
1364 (char *) (response)->response_buffer, \
1365 GLOBUS_FTP_CLIENT_ERROR_RESPONSE, \
1367 _globus_func_name, \
1369 "the server responded with an error")
1370 #define GLOBUS_I_FTP_CLIENT_ERROR_UNSUPPORTED_FEATURE(feature) \
1371 globus_error_construct_error(\
1372 GLOBUS_FTP_CLIENT_MODULE,\
1374 GLOBUS_FTP_CLIENT_ERROR_FEATURE, \
1376 _globus_func_name, \
1378 "the server doesn't support the %s feature",\
1380 #define GLOBUS_I_FTP_CLIENT_NO_RESTART_MARKER() \
1381 globus_error_construct_error( \
1382 GLOBUS_FTP_CLIENT_MODULE, \
1384 GLOBUS_FTP_CLIENT_ERROR_NO_RESTART_MARKER, \
1386 _globus_func_name, \
1388 "Could not find restart info\n")
char magic[24]
Definition: globus_i_ftp_client.h:525
globus_priority_q_t stalled_blocks
Definition: globus_i_ftp_client.h:563
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:1055
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:1024
globus_bool_t rfc1738_url
Definition: globus_i_ftp_client.h:208
char * url_string
Definition: globus_i_ftp_client.h:690
Restart information management.
Definition: globus_i_ftp_client.h:773
enum globus_ftp_control_mode_e globus_ftp_control_mode_t
GridFTP MODE values.
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:282
globus_ftp_client_handle_state_t state
Definition: globus_i_ftp_client.h:557
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:242
void(* globus_ftp_client_plugin_destroy_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific)
Definition: globus_ftp_client_plugin.h:148
globus_ftp_client_plugin_t * plugin
Definition: globus_i_ftp_client.h:816
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:830
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:1154
globus_off_t offset
Definition: globus_i_ftp_client.h:180
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:131
FTP Client handle implementation.
Definition: globus_i_ftp_client.h:522
Error Object Containing a String.
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:318
globus_i_ftp_client_handle_t * owner
Definition: globus_i_ftp_client.h:717
globus_i_ftp_client_features_t * features
Definition: globus_i_ftp_client.h:697
Handle attributes.
Definition: globus_i_ftp_client.h:193
char * checksum
Definition: globus_i_ftp_client.h:649
FTP server features we are interested in.
Definition: globus_i_ftp_client.h:436
Parsed URLs.This structure contains the fields which were parsed from an string representation of an ...
Definition: globus_url.h:88
void * plugin_specific
Definition: globus_i_ftp_client.h:873
globus_bool_t gridftp2
Definition: globus_i_ftp_client.h:214
globus_i_ftp_client_operationattr_t * attr
Definition: globus_i_ftp_client.h:714
globus_i_ftp_client_target_t * target
Definition: globus_i_ftp_client.h:766
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:685
globus_byte_t ** mlst_buffer_pointer
Definition: globus_i_ftp_client.h:633
globus_ftp_client_plugin_command_mask_t mask
Definition: globus_i_ftp_client.h:723
Control DCAU union.
Definition: globus_ftp_control.h:172
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:1000
int globus_bool_t
Boolean type.
Definition: globus_types.h:93
int num_active_blocks
Definition: globus_i_ftp_client.h:574
int globus_callback_handle_t
Periodic callback handle.
Definition: globus_callback.h:102
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:280
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:315
struct globus_fifo_s * globus_fifo_t
Definition: globus_fifo.h:48
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:473
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:615
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:941
globus_i_ftp_client_features_t * features_pointer
Definition: globus_i_ftp_client.h:630
globus_url_t url
Definition: globus_i_ftp_client.h:761
globus_ftp_client_tristate_t
Definition: globus_ftp_client.h:1216
globus_ftp_client_probed_feature_t
Definition: globus_ftp_client.h:1228
globus_ftp_control_handle_t * control_handle
Definition: globus_i_ftp_client.h:688
globus_mutex_t mutex
Definition: globus_i_ftp_client.h:646
globus_ftp_client_handle_t * handle
Definition: globus_i_ftp_client.h:528
globus_abstime_t * modification_time_pointer
Definition: globus_i_ftp_client.h:624
struct globus_i_ftp_client_target_s * dest
Definition: globus_i_ftp_client.h:502
globus_off_t read_all_biggest_offset
Definition: globus_i_ftp_client.h:621
struct tm utime_time
Definition: globus_i_ftp_client.h:643
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:865
Data connection caching information.
Definition: globus_i_ftp_client.h:491
Control tcpbuffer attribute structure.
Definition: globus_ftp_control.h:383
Control striping attribute union.
Definition: globus_ftp_control.h:210
Byte range report.This structure contains information about a single extent of data stored on an FTP ...
Definition: globus_i_ftp_client.h:175
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:356
globus_bool_t cache_all
Definition: globus_i_ftp_client.h:202
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:794
globus_fifo_t src_op_queue
Definition: globus_i_ftp_client.h:657
globus_off_t checksum_offset
Definition: globus_i_ftp_client.h:652
List data type.
Definition: globus_list.h:44
The globus_i_ftp_client_operationattr_t is a pointer to this structure type.
Definition: globus_i_ftp_client.h:131
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:400
enum globus_ftp_control_structure_e globus_ftp_control_structure_t
globus_ftp_client_target_state_t state
Definition: globus_i_ftp_client.h:685
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:904
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:650
globus_ftp_client_plugin_command_mask_t
Definition: globus_ftp_client_plugin.h:71
Mutex.
Definition: globus_thread.h:107
char * source_url
Definition: globus_i_ftp_client.h:537
globus_hashtable_t active_blocks
Definition: globus_i_ftp_client.h:569
globus_off_t end_offset
Definition: globus_i_ftp_client.h:185
FTP Connection State.
Definition: globus_i_ftp_client.h:682
globus_off_t base_offset
Definition: globus_i_ftp_client.h:617
globus_i_ftp_client_data_target_t cached_data_conn
Definition: globus_i_ftp_client.h:720
globus_ftp_client_restart_marker_t restart_marker
Definition: globus_i_ftp_client.h:605
int notify_in_progress
Definition: globus_i_ftp_client.h:597
char * dest_url
Definition: globus_i_ftp_client.h:545
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:1089
globus_off_t partial_offset
Definition: globus_i_ftp_client.h:608
globus_ftp_control_dcau_t dcau
Definition: globus_i_ftp_client.h:699
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:1121
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:1205
globus_ftp_client_plugin_copy_t copy_func
Definition: globus_i_ftp_client.h:821
struct globus_i_ftp_client_handle_t globus_i_ftp_client_handle_t
FTP Client handle implementation.
size_t globus_size_t
Standard size of memory objectThe globus_size_t is the size of a memory object. It is identical to si...
Definition: globus_types.h:48
globus_i_ftp_client_operation_t operation
Definition: globus_i_ftp_client.h:506
enum globus_ftp_control_type_e globus_ftp_control_type_t
GridFTP TYPE values.
unsigned char globus_byte_t
Unsigned byte datatypeThis is used for byte-addressable arrays of arbitrary data which is not subject...
Definition: globus_types.h:85
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:438
int chmod_file_mode
Definition: globus_i_ftp_client.h:637
globus_ftp_client_complete_callback_t callback
Definition: globus_i_ftp_client.h:552
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:720
Headers common to all of Globus.
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:544
uint32_t globus_result_t
Definition: globus_types.h:99
globus_off_t source_size
Definition: globus_i_ftp_client.h:602
globus_ftp_control_host_port_t * pasv_address
Definition: globus_i_ftp_client.h:579
globus_object_t * err
Definition: globus_i_ftp_client.h:587
void * callback_arg
Definition: globus_i_ftp_client.h:554
Priority Queue Structure.
Definition: globus_priority_q.h:98
globus_url_t url
Definition: globus_i_ftp_client.h:692
struct globus_i_ftp_client_restart_s * restart_info
Definition: globus_i_ftp_client.h:592
void * user_pointer
Definition: globus_i_ftp_client.h:670
globus_off_t * size_pointer
Definition: globus_i_ftp_client.h:627
globus_ftp_client_plugin_destroy_t destroy_func
Definition: globus_i_ftp_client.h:825
char * chgrp_group
Definition: globus_i_ftp_client.h:640
int num_pasv_addresses
Definition: globus_i_ftp_client.h:584
globus_ftp_client_plugin_command_mask_t command_mask
Definition: globus_i_ftp_client.h:870
struct globus_i_ftp_client_target_s * source
Definition: globus_i_ftp_client.h:534
struct globus_i_ftp_client_target_s * source
Definition: globus_i_ftp_client.h:497
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:976
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:756
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:798
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:175
char * plugin_name
Definition: globus_i_ftp_client.h:810
Restart marker.This structure is may be either a stream mode transfer offset, or an extended block mo...
Definition: globus_ftp_client.h:224
struct globus_i_ftp_client_target_s * dest
Definition: globus_i_ftp_client.h:543
globus_off_t partial_end_offset
Definition: globus_i_ftp_client.h:611
globus_ftp_control_auth_info_t auth_info
Definition: globus_i_ftp_client.h:694
Authentication Values.
Definition: globus_ftp_control.h:483
struct globus_i_ftp_client_handleattr_t globus_i_ftp_client_handleattr_t
Handle attributes.
Control parallelism attribute structure.
Definition: globus_ftp_control.h:261
globus_list_t * url_cache
Definition: globus_i_ftp_client.h:223
globus_list_t * plugins
Definition: globus_i_ftp_client.h:231
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:206
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:509
globus_ftp_control_protection_t
GridFTP Protection Types.
Definition: globus_ftp_control.h:185
URL caching support structure.
Definition: globus_i_ftp_client.h:758
globus_i_ftp_client_operation_t op
Definition: globus_i_ftp_client.h:549
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:580
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:1181
Module Descriptor.
Definition: globus_module.h:71