globus_ftp_client  8.41
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
globus_i_ftp_client.h
1 
2 #ifndef GLOBUS_DONT_DOCUMENT_INTERNAL
3 
7 #endif /* GLOBUS_DONT_DOCUMENT_INTERNAL */
8 
9 #ifndef GLOBUS_I_FTP_CLIENT_H
10 #define GLOBUS_I_FTP_CLIENT_H
11 
12 #include "globus_common.h"
13 #include "globus_ftp_client.h"
15 #include "globus_error_string.h"
16 #include "globus_xio.h"
17 
18 #define GLOBUS_L_FTP_CLIENT_SSH_EXEC_SCRIPT "gridftp-ssh"
19 
20 #define GLOBUS_L_FTP_CLIENT_CLIENTINFO_APPNAME "libglobus_ftp_client"
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 #ifdef DEBUG_LOCKS
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)
39 #else
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)
48 #endif
49 
55 #define GLOBUS_FTP_CLIENT_MAGIC_STRING "FTPClient-1.0"
56 
57 #ifdef BUILD_DEBUG
58 #define GLOBUS_I_FTP_CLIENT_BAD_MAGIC(h) \
59  (!(h && (*h) && \
60  !strcmp(((*h))->magic, \
61  GLOBUS_FTP_CLIENT_MAGIC_STRING)))
62 #else
63 #define GLOBUS_I_FTP_CLIENT_BAD_MAGIC(h) 0
64 #endif
65 
66 extern int globus_i_ftp_client_debug_level;
67 
68 #ifdef BUILD_DEBUG
69 #define globus_i_ftp_client_debug(Level) \
70  (globus_i_ftp_client_debug_level >= (Level))
71 
72 #define globus_i_ftp_client_debug_printf(level, message) \
73 do { \
74  if (globus_i_ftp_client_debug(level)) \
75  { \
76  globus_libc_fprintf message; \
77  } \
78 } while (0)
79 
80 #define globus_i_ftp_client_debug_states(level, handle) \
81  do { \
82  if(handle != NULL) \
83  { \
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), \
89  handle->source \
90  ? globus_i_ftp_target_state_to_string(handle->source->state) \
91  : "NULL", \
92  handle->dest \
93  ? globus_i_ftp_target_state_to_string(handle->dest->state) \
94  : "NULL")); \
95  } \
96  else \
97  { \
98  globus_i_ftp_client_debug_printf(level, (stderr, "handle is null\n")); \
99  } \
100 } while(0)
101 
102 #else
103 #define globus_i_ftp_client_debug_printf(level, message)
104 #define globus_i_ftp_client_debug_states(level, handle)
105 #endif
106 
107 /* send NOOP if idle for more than 15 seconds */
108 #define GLOBUS_I_FTP_CLIENT_NOOP_IDLE 15
109 /*
110  * Attributes
111  */
112 
117 {
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;
132  globus_ftp_client_data_callback_t read_all_intermediate_callback;
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;
137  char * authz_assert;
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;
144  int dcsc_type;
145  void * dcsc_cred;
146  gss_cred_id_t dcsc_p_cred;
147  char * dcsc_blob;
148 }
150 
160 typedef struct
161 {
165  globus_off_t offset;
166 
170  globus_off_t end_offset;
171 }
173 
179 {
187  globus_bool_t cache_all;
188 
193  globus_bool_t rfc1738_url;
194 
199  globus_bool_t gridftp2;
200 
208  globus_list_t * url_cache;
216  globus_list_t * plugins;
217 
218  globus_size_t outstanding_commands;
219  globus_ftp_client_pipeline_callback_t pipeline_callback;
220  void * pipeline_arg;
221  globus_bool_t pipeline_done;
222 
223  /*
224  * NETLOGGER
225  */
226  globus_bool_t nl_ftp;
227  globus_bool_t nl_io;
228  globus_netlogger_handle_t * nl_handle;
229 
230  /* client info */
231  char * clientinfo_app_name;
232  char * clientinfo_app_ver;
233  char * clientinfo_other;
234 }
236 
237 /* Handles */
241 typedef enum
242 {
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,
254  /* This is called when one side of a third-party transfer has sent
255  * it's positive or negative response to the transfer, but the
256  * other hasn't yet done the same.
257  */
258  GLOBUS_FTP_CLIENT_HANDLE_THIRD_PARTY_TRANSFER,
259  GLOBUS_FTP_CLIENT_HANDLE_THIRD_PARTY_TRANSFER_ONE_COMPLETE,
260  GLOBUS_FTP_CLIENT_HANDLE_FINALIZE
261 }
262 globus_ftp_client_handle_state_t;
263 
267 typedef enum
268 {
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
292 }
293 globus_i_ftp_client_operation_t;
294 
295 typedef enum
296 {
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
386 }
387 globus_ftp_client_target_state_t;
388 
389 
390 typedef struct globus_i_ftp_client_url_ent_s
391 {
392  globus_i_ftp_client_operation_t op;
393  char * source_url;
394  globus_url_t src_url;
395  char * dest_url;
396  globus_url_t dst_url;
397 
398 } globus_i_ftp_client_url_ent_t;
399 
400 
413 /* Do not access members of the feature
414  structures below. Instead, use interface functions:
415  globus_i_ftp_client_feature_get()
416  globus_i_ftp_client_feature_set()
417  globus_i_ftp_client_features_init()
418  globus_i_ftp_client_features_destroy()
419  This will facilitate future changes in the structures.
420 */
422 {
423  globus_ftp_client_tristate_t list[GLOBUS_FTP_CLIENT_FEATURE_MAX];
425 
426 
427 /* Should it be needed to store feature parameters
428  beside feature names, these are the proposed structures:
429 
430 typedef struct globus_i_ftp_client_feature_s{
431  globus_ftp_client_tristate_t supported;
432  char ** attrs;
433 } globus_i_ftp_client_feature_t;
434 
435 typedef struct globus_i_ftp_client_features_s
436 {
437  globus_ftp_client_feature_t list[GLOBUS_FTP_CLIENT_FEATURE_MAX];
438 } globus_i_ftp_client_features_t;
439 
440 */
441 
443 globus_i_ftp_client_features_init();
444 
445 globus_result_t
446 globus_i_ftp_client_features_destroy(
447  globus_i_ftp_client_features_t * features);
448 
450 globus_i_ftp_client_feature_get(
453 
454 void
455 globus_i_ftp_client_feature_set(
459 
460 char *
461 globus_i_ftp_client_find_ssh_client_program();
462 
476 typedef struct
477 {
491  globus_i_ftp_client_operation_t operation;
492 }
494 
508 {
510  char magic[24];
511 
514 
520 
522  char * source_url;
523 
530  char * dest_url;
532 
534  globus_i_ftp_client_operation_t op;
535 
539  void * callback_arg;
540 
542  globus_ftp_client_handle_state_t state;
543 
548  globus_priority_q_t stalled_blocks;
549 
554  globus_hashtable_t active_blocks;
555 
560 
564  globus_ftp_control_host_port_t * pasv_address;
565 
570 
572  globus_object_t * err;
573 
578 
583  globus_bool_t notify_abort;
584  globus_bool_t notify_restart;
585 
587  globus_off_t source_size;
588 
591 
593  globus_off_t partial_offset;
594 
596  globus_off_t partial_end_offset;
597 
602  globus_off_t base_offset;
607 
609  globus_abstime_t * modification_time_pointer;
610 
612  globus_off_t * size_pointer;
613 
616 
618  globus_byte_t ** mlst_buffer_pointer;
619  globus_size_t * mlst_buffer_length_pointer;
620 
623 
625  char * chgrp_group;
626 
628  struct tm utime_time;
629 
631  globus_mutex_t mutex;
632 
634  char * checksum;
635 
637  globus_off_t checksum_offset;
638  globus_off_t checksum_length;
639  char * checksum_alg;
640 
642  globus_fifo_t src_op_queue;
643  globus_fifo_t dst_op_queue;
644  globus_fifo_t src_response_pending_queue;
645  globus_fifo_t dst_response_pending_queue;
646 
647  int no_callback_count;
648 
649  globus_bool_t source_pasv;
650  globus_bool_t tried_both_pasv;
655  void * user_pointer;
656 }
658 
668 {
670  globus_ftp_client_target_state_t state;
671 
673  globus_ftp_control_handle_t * control_handle;
675  char * url_string;
677  globus_url_t url;
679  globus_ftp_control_auth_info_t auth_info;
680 
684  globus_ftp_control_dcau_t dcau;
685  globus_ftp_control_protection_t data_prot;
686  unsigned long pbsz;
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;
693  char * authz_assert;
694  char * net_stack_str;
695  char * disk_stack_str;
696  globus_bool_t delayed_pasv;
697 
700 
703 
706 
709 
710  /* used for determining need for NOOP */
711  globus_abstime_t last_access;
712 
713  globus_bool_t src_command_sent;
714  globus_bool_t dst_command_sent;
715 
716  globus_list_t * net_stack_list;
717 
718  char * clientinfo_argstr;
719 
720  int dcsc_type;
721  char * dcsc_blob;
722  gss_cred_id_t dcsc_p_cred;
724 
743 typedef struct
744 {
746  globus_url_t url;
752 }
754 
759 {
760  char * source_url;
762  char * dest_url;
765  globus_abstime_t when;
766  globus_callback_handle_t callback_handle;
767 }
769 
784 {
795  char * plugin_name;
796 
802 
811 
821  globus_ftp_client_plugin_verbose_list_t verbose_list_func;
822  globus_ftp_client_plugin_machine_list_t machine_list_func;
823  globus_ftp_client_plugin_recursive_list_t recursive_list_func;
830  third_party_transfer_func;
831 
833  modification_time_func;
838  globus_ftp_client_plugin_authenticate_t authenticate_func;
842 
847 
856 
860 
861 
862 #ifndef DOXYGEN
863 /* globus_ftp_client_attr.c */
864 globus_result_t
865 globus_i_ftp_client_handleattr_copy(
868 
869 void
870 globus_i_ftp_client_handleattr_destroy(
872 
873 int
874 globus_i_ftp_client_plugin_list_search(
875  void * datum,
876  void * arg);
877 /* globus_ftp_client.c */
878 void
879 globus_i_ftp_client_handle_is_active(globus_ftp_client_handle_t *handle);
880 
881 void
882 globus_i_ftp_client_handle_is_not_active(globus_ftp_client_handle_t *handle);
883 
884 void
885 globus_i_ftp_client_control_is_active(globus_ftp_control_handle_t * handle);
886 
887 void
888 globus_i_ftp_client_control_is_not_active(globus_ftp_control_handle_t * handle);
889 
890 const char *
891 globus_i_ftp_op_to_string(
892  globus_i_ftp_client_operation_t op);
893 
894 const char *
895 globus_i_ftp_target_state_to_string(
896  globus_ftp_client_target_state_t target_state);
897 
898 const char *
899 globus_i_ftp_handle_state_to_string(
900  globus_ftp_client_handle_state_t handle_state);
901 
902 int
903 globus_i_ftp_client_count_digits(
904  globus_off_t num);
905 
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;
908 
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;
912 
913 
914 /* globus_ftp_client_handle.c */
915 globus_object_t *
916 globus_i_ftp_client_target_find(
918  const char * url,
920  globus_i_ftp_client_target_t ** target);
921 
922 void
923 globus_i_ftp_client_target_release(
926 
927 void
928 globus_i_ftp_client_restart_info_delete(
929  globus_i_ftp_client_restart_t * restart_info);
930 
931 globus_bool_t
932 globus_i_ftp_client_can_reuse_data_conn(
933  globus_i_ftp_client_handle_t * client_handle);
934 
935 globus_result_t
936 globus_i_ftp_client_cache_add(
937  globus_list_t ** cache,
938  const char * url,
939  globus_bool_t rfc1738_url);
940 
941 globus_result_t
942 globus_i_ftp_client_cache_remove(
943  globus_list_t ** cache,
944  const char * url,
945  globus_bool_t rfc1738_url);
946 
947 globus_result_t
948 globus_i_ftp_client_cache_destroy(
949  globus_list_t ** cache);
950 
951 /* globus_ftp_client_data.c */
952 int
953 globus_i_ftp_client_data_cmp(
954  void * priority_1,
955  void * priority_2);
956 
957 globus_object_t *
958 globus_i_ftp_client_data_dispatch_queue(
960 
961 void
962 globus_i_ftp_client_data_flush(
964 
965 /* globus_ftp_client_transfer.c */
966 void
967 globus_i_ftp_client_transfer_complete(
968  globus_i_ftp_client_handle_t * client_handle);
969 
970 globus_object_t *
971 globus_i_ftp_client_restart(
973  globus_i_ftp_client_restart_t * restart_info);
974 
975 /* globus_ftp_client_plugin.c */
976 
977 void
978 globus_i_ftp_client_plugin_notify_list(
980  const char * url,
982 
983 void
984 globus_i_ftp_client_plugin_notify_verbose_list(
986  const char * url,
988 
989 void
990 globus_i_ftp_client_plugin_notify_machine_list(
992  const char * url,
994 
995 void
996 globus_i_ftp_client_plugin_notify_recursive_list(
998  const char * url,
1000 
1001 void
1002 globus_i_ftp_client_plugin_notify_mlst(
1004  const char * url,
1006 
1007 void
1008 globus_i_ftp_client_plugin_notify_stat(
1010  const char * url,
1012 
1013 void
1014 globus_i_ftp_client_plugin_notify_chmod(
1016  const char * url,
1017  int mode,
1019 
1020 void
1021 globus_i_ftp_client_plugin_notify_chgrp(
1023  const char * url,
1024  const char * group,
1026 
1027 void
1028 globus_i_ftp_client_plugin_notify_utime(
1030  const char * url,
1031  const struct tm * utime_time,
1033 
1034 void
1035 globus_i_ftp_client_plugin_notify_symlink(
1037  const char * url,
1038  const char * link_url,
1040 
1041 void
1042 globus_i_ftp_client_plugin_notify_cksm(
1044  const char * url,
1045  globus_off_t offset,
1046  globus_off_t length,
1047  const char * algorithm,
1049 
1050 void
1051 globus_i_ftp_client_plugin_notify_delete(
1053  const char * url,
1055 
1056 void
1057 globus_i_ftp_client_plugin_notify_feat(
1059  const char * url,
1061 
1062 void
1063 globus_i_ftp_client_plugin_notify_mkdir(
1065  const char * url,
1067 
1068 void
1069 globus_i_ftp_client_plugin_notify_rmdir(
1071  const char * url,
1073 
1074 void
1075 globus_i_ftp_client_plugin_notify_move(
1077  const char * source_url,
1078  const char * dest_url,
1080 
1081 void
1082 globus_i_ftp_client_plugin_notify_get(
1084  const char * url,
1086  const globus_ftp_client_restart_marker_t * restart);
1087 
1088 void
1089 globus_i_ftp_client_plugin_notify_put(
1091  const char * url,
1093  const globus_ftp_client_restart_marker_t * restart);
1094 
1095 void
1096 globus_i_ftp_client_plugin_notify_transfer(
1098  const char * source_url,
1100  const char * dest_url,
1102  const globus_ftp_client_restart_marker_t * restart);
1103 
1104 void
1105 globus_i_ftp_client_plugin_notify_modification_time(
1107  const char * url,
1109 
1110 void
1111 globus_i_ftp_client_plugin_notify_size(
1113  const char * url,
1115 
1116 void
1117 globus_i_ftp_client_plugin_notify_restart(
1118  globus_i_ftp_client_handle_t * handle);
1119 
1120 void
1121 globus_i_ftp_client_plugin_notify_connect(
1123  const char * url);
1124 
1125 void
1126 globus_i_ftp_client_plugin_notify_authenticate(
1128  const char * url,
1129  const globus_ftp_control_auth_info_t * auth_info);
1130 
1131 void
1132 globus_i_ftp_client_plugin_notify_abort(
1133  globus_i_ftp_client_handle_t * handle);
1134 
1135 void
1136 globus_i_ftp_client_plugin_notify_read(
1138  const globus_byte_t * buffer,
1139  globus_size_t buffer_length);
1140 
1141 void
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,
1147  globus_bool_t eof);
1148 
1149 void
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,
1156  globus_bool_t eof);
1157 
1158 void
1159 globus_i_ftp_client_plugin_notify_command(
1161  const char * url,
1163  const char * command_spec,
1164  ...);
1165 
1166 void
1167 globus_i_ftp_client_plugin_notify_response(
1169  const char * url,
1171  globus_object_t * error,
1172  const globus_ftp_control_response_t * ftp_response);
1173 
1174 void
1175 globus_i_ftp_client_plugin_notify_fault(
1177  const char * url,
1178  globus_object_t * error);
1179 
1180 void
1181 globus_i_ftp_client_plugin_notify_complete(
1182  globus_i_ftp_client_handle_t * handle);
1183 
1184 /* globus_ftp_client_restart.c */
1185 globus_object_t *
1186 globus_i_ftp_client_restart_register_oneshot(
1187  globus_i_ftp_client_handle_t * handle);
1188 
1189 /* globus_ftp_client_transfer.c */
1190 
1191 globus_object_t *
1192 globus_l_ftp_client_url_parse(
1193  const char * url_string,
1194  globus_url_t * url,
1195  globus_bool_t rfc1738_url);
1196 
1197 void
1198 globus_i_ftp_client_force_close_callback(
1199  void * user_arg,
1200  globus_ftp_control_handle_t * handle,
1201  globus_object_t * error,
1202  globus_ftp_control_response_t * response);
1203 
1204 globus_object_t *
1205 globus_i_ftp_client_target_activate(
1208  globus_bool_t * registered);
1209 
1210 /* globus_ftp_client_state.c */
1211 void
1212 globus_i_ftp_client_response_callback(
1213  void * user_arg,
1214  globus_ftp_control_handle_t * handle,
1215  globus_object_t * error,
1216  globus_ftp_control_response_t * response);
1217 
1218 /* globus_ftp_client_data.c */
1219 void
1220 globus_l_ftp_client_complete_kickout(
1221  void * user_arg);
1222 
1223 globus_object_t *
1224 globus_i_ftp_client_wrap_ftp_error(
1225  globus_module_descriptor_t * base_source,
1226  int code,
1227  const char * message,
1228  int error_type,
1229  const char * source_file,
1230  const char * source_func,
1231  int source_line,
1232  const char * format,
1233  ...);
1234 /* Errors */
1235 
1236 #define GLOBUS_I_FTP_CLIENT_ERROR_NULL_PARAMETER(param) \
1237  globus_error_construct_error(\
1238  GLOBUS_FTP_CLIENT_MODULE,\
1239  GLOBUS_NULL,\
1240  GLOBUS_FTP_CLIENT_ERROR_PARAMETER, \
1241  __FILE__, \
1242  _globus_func_name, \
1243  __LINE__, \
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,\
1248  GLOBUS_NULL,\
1249  GLOBUS_FTP_CLIENT_ERROR_PARAMETER, \
1250  __FILE__, \
1251  _globus_func_name, \
1252  __LINE__, \
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,\
1257  GLOBUS_NULL,\
1258  GLOBUS_FTP_CLIENT_ERROR_MEMORY, \
1259  __FILE__, \
1260  _globus_func_name, \
1261  __LINE__, \
1262  "a memory allocation failed")
1263 #define GLOBUS_I_FTP_CLIENT_ERROR_OPERATION_ABORTED() \
1264  globus_error_construct_error(\
1265  GLOBUS_FTP_CLIENT_MODULE,\
1266  GLOBUS_NULL,\
1267  GLOBUS_FTP_CLIENT_ERROR_ABORTED, \
1268  __FILE__, \
1269  _globus_func_name, \
1270  __LINE__, \
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,\
1275  err,\
1276  GLOBUS_FTP_CLIENT_ERROR_INTERNAL, \
1277  __FILE__, \
1278  _globus_func_name, \
1279  __LINE__, \
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,\
1284  GLOBUS_NULL,\
1285  GLOBUS_FTP_CLIENT_ERROR_IN_USE, \
1286  __FILE__, \
1287  _globus_func_name, \
1288  __LINE__, \
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,\
1293  GLOBUS_NULL,\
1294  GLOBUS_FTP_CLIENT_ERROR_NOT_IN_USE, \
1295  __FILE__, \
1296  _globus_func_name, \
1297  __LINE__, \
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,\
1302  GLOBUS_NULL,\
1303  GLOBUS_FTP_CLIENT_ERROR_COMPLETED, \
1304  __FILE__, \
1305  _globus_func_name, \
1306  __LINE__, \
1307  "already done")
1308 #define GLOBUS_I_FTP_CLIENT_ERROR_INVALID_OPERATION(op) \
1309  globus_error_construct_error(\
1310  GLOBUS_FTP_CLIENT_MODULE,\
1311  GLOBUS_NULL,\
1312  GLOBUS_FTP_CLIENT_ERROR_INVALID_OPERATION, \
1313  __FILE__, \
1314  _globus_func_name, \
1315  __LINE__, \
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,\
1321  GLOBUS_NULL,\
1322  GLOBUS_FTP_CLIENT_ERROR_UNEXPECTED_EOF, \
1323  __FILE__, \
1324  _globus_func_name, \
1325  __LINE__, \
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,\
1330  GLOBUS_NULL,\
1331  GLOBUS_FTP_CLIENT_ERROR_NO_SUCH_FILE, \
1332  __FILE__, \
1333  _globus_func_name, \
1334  __LINE__, \
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,\
1339  GLOBUS_NULL,\
1340  GLOBUS_FTP_CLIENT_ERROR_PROTOCOL, \
1341  __FILE__, \
1342  _globus_func_name, \
1343  __LINE__, \
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, \
1348  (response)->code, \
1349  (char *) (response)->response_buffer, \
1350  GLOBUS_FTP_CLIENT_ERROR_RESPONSE, \
1351  __FILE__, \
1352  _globus_func_name, \
1353  __LINE__, \
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,\
1358  GLOBUS_NULL,\
1359  GLOBUS_FTP_CLIENT_ERROR_FEATURE, \
1360  __FILE__, \
1361  _globus_func_name, \
1362  __LINE__, \
1363  "the server doesn't support the %s feature",\
1364  feature)
1365 #define GLOBUS_I_FTP_CLIENT_NO_RESTART_MARKER() \
1366  globus_error_construct_error( \
1367  GLOBUS_FTP_CLIENT_MODULE, \
1368  GLOBUS_NULL, \
1369  GLOBUS_FTP_CLIENT_ERROR_NO_RESTART_MARKER, \
1370  __FILE__, \
1371  _globus_func_name, \
1372  __LINE__, \
1373  "Could not find restart info\n")
1374 
1375 #endif
1376 
1377 #ifdef __cplusplus
1378 }
1379 #endif
1380 
1381 #endif /* GLOBUS_I_FTP_CLIENT_H */
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
GridFTP Client.
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
Plugin Implementation.
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