Grid Community Toolkit  6.2.1541705016
globus_i_ftp_client.h
1 /*
2  * Copyright 1999-2006 University of Chicago
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef GLOBUS_DONT_DOCUMENT_INTERNAL
18 
22 #endif /* GLOBUS_DONT_DOCUMENT_INTERNAL */
23 
24 #ifndef GLOBUS_I_FTP_CLIENT_H
25 #define GLOBUS_I_FTP_CLIENT_H
26 
27 #include "globus_common.h"
28 #include "globus_ftp_client.h"
30 #include "globus_error_string.h"
31 #include "globus_xio.h"
32 
33 #define GLOBUS_L_FTP_CLIENT_SSH_EXEC_SCRIPT "gridftp-ssh"
34 
35 #define GLOBUS_L_FTP_CLIENT_CLIENTINFO_APPNAME "libglobus_ftp_client"
36 
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40 
41 #ifdef DEBUG_LOCKS
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)
54 #else
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)
63 #endif
64 
70 #define GLOBUS_FTP_CLIENT_MAGIC_STRING "FTPClient-1.0"
71 
72 #ifdef BUILD_DEBUG
73 #define GLOBUS_I_FTP_CLIENT_BAD_MAGIC(h) \
74  (!(h && (*h) && \
75  !strcmp(((*h))->magic, \
76  GLOBUS_FTP_CLIENT_MAGIC_STRING)))
77 #else
78 #define GLOBUS_I_FTP_CLIENT_BAD_MAGIC(h) 0
79 #endif
80 
81 extern int globus_i_ftp_client_debug_level;
82 
83 #ifdef BUILD_DEBUG
84 #define globus_i_ftp_client_debug(Level) \
85  (globus_i_ftp_client_debug_level >= (Level))
86 
87 #define globus_i_ftp_client_debug_printf(level, message) \
88 do { \
89  if (globus_i_ftp_client_debug(level)) \
90  { \
91  globus_libc_fprintf message; \
92  } \
93 } while (0)
94 
95 #define globus_i_ftp_client_debug_states(level, handle) \
96  do { \
97  if(handle != NULL) \
98  { \
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), \
104  handle->source \
105  ? globus_i_ftp_target_state_to_string(handle->source->state) \
106  : "NULL", \
107  handle->dest \
108  ? globus_i_ftp_target_state_to_string(handle->dest->state) \
109  : "NULL")); \
110  } \
111  else \
112  { \
113  globus_i_ftp_client_debug_printf(level, (stderr, "handle is null\n")); \
114  } \
115 } while(0)
116 
117 #else
118 #define globus_i_ftp_client_debug_printf(level, message)
119 #define globus_i_ftp_client_debug_states(level, handle)
120 #endif
121 
122 /* send NOOP if idle for more than 15 seconds */
123 #define GLOBUS_I_FTP_CLIENT_NOOP_IDLE 15
124 /*
125  * Attributes
126  */
127 
132 {
134  globus_bool_t force_striped;
137  globus_bool_t using_default_auth;
141  globus_bool_t list_uses_data_mode;
142  globus_bool_t append;
145  globus_bool_t resume_third_party;
146  globus_bool_t read_all;
147  globus_ftp_client_data_callback_t read_all_intermediate_callback;
148  void * read_all_intermediate_callback_arg;
149  globus_bool_t allow_ipv6;
150  globus_off_t allocated_size;
151  globus_bool_t cwd_first;
152  char * authz_assert;
153  globus_bool_t cache_authz_assert;
154  globus_bool_t delayed_pasv;
155  char * net_stack_str;
156  char * disk_stack_str;
157  char * module_alg_str;
158  char * clientinfo_argstr;
159  int dcsc_type;
160  void * dcsc_cred;
161  gss_cred_id_t dcsc_p_cred;
162  char * dcsc_blob;
163 }
165 
175 typedef struct
176 {
180  globus_off_t offset;
181 
185  globus_off_t end_offset;
186 }
188 
194 {
203 
209 
215 
232 
233  globus_size_t outstanding_commands;
234  globus_ftp_client_pipeline_callback_t pipeline_callback;
235  void * pipeline_arg;
236  globus_bool_t pipeline_done;
237 
238  /*
239  * NETLOGGER
240  */
241  globus_bool_t nl_ftp;
242  globus_bool_t nl_io;
243  globus_netlogger_handle_t * nl_handle;
244 
245  /* client info */
246  char * clientinfo_app_name;
247  char * clientinfo_app_ver;
248  char * clientinfo_other;
249 }
251 
252 /* Handles */
256 typedef enum
257 {
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,
269  /* This is called when one side of a third-party transfer has sent
270  * it's positive or negative response to the transfer, but the
271  * other hasn't yet done the same.
272  */
273  GLOBUS_FTP_CLIENT_HANDLE_THIRD_PARTY_TRANSFER,
274  GLOBUS_FTP_CLIENT_HANDLE_THIRD_PARTY_TRANSFER_ONE_COMPLETE,
275  GLOBUS_FTP_CLIENT_HANDLE_FINALIZE
276 }
277 globus_ftp_client_handle_state_t;
278 
282 typedef enum
283 {
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
307 }
308 globus_i_ftp_client_operation_t;
309 
310 typedef enum
311 {
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
401 }
402 globus_ftp_client_target_state_t;
403 
404 
405 typedef struct globus_i_ftp_client_url_ent_s
406 {
407  globus_i_ftp_client_operation_t op;
408  char * source_url;
409  globus_url_t src_url;
410  char * dest_url;
411  globus_url_t dst_url;
412 
413 } globus_i_ftp_client_url_ent_t;
414 
415 
428 /* Do not access members of the feature
429  structures below. Instead, use interface functions:
430  globus_i_ftp_client_feature_get()
431  globus_i_ftp_client_feature_set()
432  globus_i_ftp_client_features_init()
433  globus_i_ftp_client_features_destroy()
434  This will facilitate future changes in the structures.
435 */
437 {
438  globus_ftp_client_tristate_t list[GLOBUS_FTP_CLIENT_FEATURE_MAX];
440 
441 
442 /* Should it be needed to store feature parameters
443  beside feature names, these are the proposed structures:
444 
445 typedef struct globus_i_ftp_client_feature_s{
446  globus_ftp_client_tristate_t supported;
447  char ** attrs;
448 } globus_i_ftp_client_feature_t;
449 
450 typedef struct globus_i_ftp_client_features_s
451 {
452  globus_ftp_client_feature_t list[GLOBUS_FTP_CLIENT_FEATURE_MAX];
453 } globus_i_ftp_client_features_t;
454 
455 */
456 
458 globus_i_ftp_client_features_init();
459 
461 globus_i_ftp_client_features_destroy(
462  globus_i_ftp_client_features_t * features);
463 
465 globus_i_ftp_client_feature_get(
468 
469 void
470 globus_i_ftp_client_feature_set(
474 
475 char *
476 globus_i_ftp_client_find_ssh_client_program();
477 
491 typedef struct
492 {
506  globus_i_ftp_client_operation_t operation;
507 }
509 
523 {
525  char magic[24];
526 
529 
535 
537  char * source_url;
538 
545  char * dest_url;
547 
549  globus_i_ftp_client_operation_t op;
550 
554  void * callback_arg;
555 
557  globus_ftp_client_handle_state_t state;
558 
564 
569  globus_hashtable_t active_blocks;
570 
575 
579  globus_ftp_control_host_port_t * pasv_address;
580 
585 
587  globus_object_t * err;
588 
593 
598  globus_bool_t notify_abort;
599  globus_bool_t notify_restart;
600 
602  globus_off_t source_size;
603 
606 
608  globus_off_t partial_offset;
609 
611  globus_off_t partial_end_offset;
612 
617  globus_off_t base_offset;
622 
624  globus_abstime_t * modification_time_pointer;
625 
627  globus_off_t * size_pointer;
628 
631 
634  globus_size_t * mlst_buffer_length_pointer;
635 
638 
640  char * chgrp_group;
641 
643  struct tm utime_time;
644 
647 
649  char * checksum;
650 
652  globus_off_t checksum_offset;
653  globus_off_t checksum_length;
654  char * checksum_alg;
655 
658  globus_fifo_t dst_op_queue;
659  globus_fifo_t src_response_pending_queue;
660  globus_fifo_t dst_response_pending_queue;
661 
662  int no_callback_count;
663 
664  globus_bool_t source_pasv;
665  globus_bool_t tried_both_pasv;
670  void * user_pointer;
671 }
673 
683 {
685  globus_ftp_client_target_state_t state;
686 
688  globus_ftp_control_handle_t * control_handle;
690  char * url_string;
695 
701  unsigned long pbsz;
708  char * authz_assert;
709  char * net_stack_str;
710  char * disk_stack_str;
711  globus_bool_t delayed_pasv;
712 
715 
718 
721 
724 
725  /* used for determining need for NOOP */
726  globus_abstime_t last_access;
727 
728  globus_bool_t src_command_sent;
729  globus_bool_t dst_command_sent;
730 
731  globus_list_t * net_stack_list;
732 
733  char * clientinfo_argstr;
734 
735  int dcsc_type;
736  char * dcsc_blob;
737  gss_cred_id_t dcsc_p_cred;
739 
758 typedef struct
759 {
767 }
769 
774 {
775  char * source_url;
777  char * dest_url;
780  globus_abstime_t when;
781  globus_callback_handle_t callback_handle;
782 }
784 
799 {
810  char * plugin_name;
811 
817 
826 
836  globus_ftp_client_plugin_verbose_list_t verbose_list_func;
837  globus_ftp_client_plugin_machine_list_t machine_list_func;
838  globus_ftp_client_plugin_recursive_list_t recursive_list_func;
845  third_party_transfer_func;
846 
848  modification_time_func;
853  globus_ftp_client_plugin_authenticate_t authenticate_func;
857 
862 
871 
875 
876 
877 #ifndef DOXYGEN
878 /* globus_ftp_client_attr.c */
880 globus_i_ftp_client_handleattr_copy(
883 
884 void
885 globus_i_ftp_client_handleattr_destroy(
887 
888 int
889 globus_i_ftp_client_plugin_list_search(
890  void * datum,
891  void * arg);
892 /* globus_ftp_client.c */
893 void
894 globus_i_ftp_client_handle_is_active(globus_ftp_client_handle_t *handle);
895 
896 void
897 globus_i_ftp_client_handle_is_not_active(globus_ftp_client_handle_t *handle);
898 
899 void
900 globus_i_ftp_client_control_is_active(globus_ftp_control_handle_t * handle);
901 
902 void
903 globus_i_ftp_client_control_is_not_active(globus_ftp_control_handle_t * handle);
904 
905 const char *
906 globus_i_ftp_op_to_string(
907  globus_i_ftp_client_operation_t op);
908 
909 const char *
910 globus_i_ftp_target_state_to_string(
911  globus_ftp_client_target_state_t target_state);
912 
913 const char *
914 globus_i_ftp_handle_state_to_string(
915  globus_ftp_client_handle_state_t handle_state);
916 
917 int
918 globus_i_ftp_client_count_digits(
919  globus_off_t num);
920 
921 extern globus_ftp_control_auth_info_t globus_i_ftp_client_default_auth_info;
922 extern globus_reltime_t globus_i_ftp_client_noop_idle;
923 
924 extern globus_xio_stack_t ftp_client_i_popen_stack;
925 extern globus_xio_driver_t ftp_client_i_popen_driver;
926 extern globus_bool_t ftp_client_i_popen_ready;
927 
928 
929 /* globus_ftp_client_handle.c */
930 globus_object_t *
931 globus_i_ftp_client_target_find(
933  const char * url,
935  globus_i_ftp_client_target_t ** target);
936 
937 void
938 globus_i_ftp_client_target_release(
941 
942 void
943 globus_i_ftp_client_restart_info_delete(
944  globus_i_ftp_client_restart_t * restart_info);
945 
947 globus_i_ftp_client_can_reuse_data_conn(
948  globus_i_ftp_client_handle_t * client_handle);
949 
951 globus_i_ftp_client_cache_add(
952  globus_list_t ** cache,
953  const char * url,
954  globus_bool_t rfc1738_url);
955 
957 globus_i_ftp_client_cache_remove(
958  globus_list_t ** cache,
959  const char * url,
960  globus_bool_t rfc1738_url);
961 
963 globus_i_ftp_client_cache_destroy(
964  globus_list_t ** cache);
965 
966 /* globus_ftp_client_data.c */
967 int
968 globus_i_ftp_client_data_cmp(
969  void * priority_1,
970  void * priority_2);
971 
972 globus_object_t *
973 globus_i_ftp_client_data_dispatch_queue(
975 
976 void
977 globus_i_ftp_client_data_flush(
979 
980 /* globus_ftp_client_transfer.c */
981 void
982 globus_i_ftp_client_transfer_complete(
983  globus_i_ftp_client_handle_t * client_handle);
984 
985 globus_object_t *
986 globus_i_ftp_client_restart(
988  globus_i_ftp_client_restart_t * restart_info);
989 
990 /* globus_ftp_client_plugin.c */
991 
992 void
993 globus_i_ftp_client_plugin_notify_list(
995  const char * url,
997 
998 void
999 globus_i_ftp_client_plugin_notify_verbose_list(
1001  const char * url,
1003 
1004 void
1005 globus_i_ftp_client_plugin_notify_machine_list(
1007  const char * url,
1009 
1010 void
1011 globus_i_ftp_client_plugin_notify_recursive_list(
1013  const char * url,
1015 
1016 void
1017 globus_i_ftp_client_plugin_notify_mlst(
1019  const char * url,
1021 
1022 void
1023 globus_i_ftp_client_plugin_notify_stat(
1025  const char * url,
1027 
1028 void
1029 globus_i_ftp_client_plugin_notify_chmod(
1031  const char * url,
1032  int mode,
1034 
1035 void
1036 globus_i_ftp_client_plugin_notify_chgrp(
1038  const char * url,
1039  const char * group,
1041 
1042 void
1043 globus_i_ftp_client_plugin_notify_utime(
1045  const char * url,
1046  const struct tm * utime_time,
1048 
1049 void
1050 globus_i_ftp_client_plugin_notify_symlink(
1052  const char * url,
1053  const char * link_url,
1055 
1056 void
1057 globus_i_ftp_client_plugin_notify_cksm(
1059  const char * url,
1060  globus_off_t offset,
1061  globus_off_t length,
1062  const char * algorithm,
1064 
1065 void
1066 globus_i_ftp_client_plugin_notify_delete(
1068  const char * url,
1070 
1071 void
1072 globus_i_ftp_client_plugin_notify_feat(
1074  const char * url,
1076 
1077 void
1078 globus_i_ftp_client_plugin_notify_mkdir(
1080  const char * url,
1082 
1083 void
1084 globus_i_ftp_client_plugin_notify_rmdir(
1086  const char * url,
1088 
1089 void
1090 globus_i_ftp_client_plugin_notify_move(
1092  const char * source_url,
1093  const char * dest_url,
1095 
1096 void
1097 globus_i_ftp_client_plugin_notify_get(
1099  const char * url,
1101  const globus_ftp_client_restart_marker_t * restart);
1102 
1103 void
1104 globus_i_ftp_client_plugin_notify_put(
1106  const char * url,
1108  const globus_ftp_client_restart_marker_t * restart);
1109 
1110 void
1111 globus_i_ftp_client_plugin_notify_transfer(
1113  const char * source_url,
1115  const char * dest_url,
1117  const globus_ftp_client_restart_marker_t * restart);
1118 
1119 void
1120 globus_i_ftp_client_plugin_notify_modification_time(
1122  const char * url,
1124 
1125 void
1126 globus_i_ftp_client_plugin_notify_size(
1128  const char * url,
1130 
1131 void
1132 globus_i_ftp_client_plugin_notify_restart(
1133  globus_i_ftp_client_handle_t * handle);
1134 
1135 void
1136 globus_i_ftp_client_plugin_notify_connect(
1138  const char * url);
1139 
1140 void
1141 globus_i_ftp_client_plugin_notify_authenticate(
1143  const char * url,
1144  const globus_ftp_control_auth_info_t * auth_info);
1145 
1146 void
1147 globus_i_ftp_client_plugin_notify_abort(
1148  globus_i_ftp_client_handle_t * handle);
1149 
1150 void
1151 globus_i_ftp_client_plugin_notify_read(
1153  const globus_byte_t * buffer,
1154  globus_size_t buffer_length);
1155 
1156 void
1157 globus_i_ftp_client_plugin_notify_write(
1159  const globus_byte_t * buffer,
1160  globus_size_t buffer_length,
1161  globus_off_t offset,
1162  globus_bool_t eof);
1163 
1164 void
1165 globus_i_ftp_client_plugin_notify_data(
1167  globus_object_t * error,
1168  const globus_byte_t * buffer,
1169  globus_size_t buffer_length,
1170  globus_off_t offset,
1171  globus_bool_t eof);
1172 
1173 void
1174 globus_i_ftp_client_plugin_notify_command(
1176  const char * url,
1178  const char * command_spec,
1179  ...);
1180 
1181 void
1182 globus_i_ftp_client_plugin_notify_response(
1184  const char * url,
1186  globus_object_t * error,
1187  const globus_ftp_control_response_t * ftp_response);
1188 
1189 void
1190 globus_i_ftp_client_plugin_notify_fault(
1192  const char * url,
1193  globus_object_t * error);
1194 
1195 void
1196 globus_i_ftp_client_plugin_notify_complete(
1197  globus_i_ftp_client_handle_t * handle);
1198 
1199 /* globus_ftp_client_restart.c */
1200 globus_object_t *
1201 globus_i_ftp_client_restart_register_oneshot(
1202  globus_i_ftp_client_handle_t * handle);
1203 
1204 /* globus_ftp_client_transfer.c */
1205 
1206 globus_object_t *
1207 globus_l_ftp_client_url_parse(
1208  const char * url_string,
1209  globus_url_t * url,
1210  globus_bool_t rfc1738_url);
1211 
1212 void
1213 globus_i_ftp_client_force_close_callback(
1214  void * user_arg,
1215  globus_ftp_control_handle_t * handle,
1216  globus_object_t * error,
1217  globus_ftp_control_response_t * response);
1218 
1219 globus_object_t *
1220 globus_i_ftp_client_target_activate(
1223  globus_bool_t * registered);
1224 
1225 /* globus_ftp_client_state.c */
1226 void
1227 globus_i_ftp_client_response_callback(
1228  void * user_arg,
1229  globus_ftp_control_handle_t * handle,
1230  globus_object_t * error,
1231  globus_ftp_control_response_t * response);
1232 
1233 /* globus_ftp_client_data.c */
1234 void
1235 globus_l_ftp_client_complete_kickout(
1236  void * user_arg);
1237 
1238 globus_object_t *
1239 globus_i_ftp_client_wrap_ftp_error(
1240  globus_module_descriptor_t * base_source,
1241  int code,
1242  const char * message,
1243  int error_type,
1244  const char * source_file,
1245  const char * source_func,
1246  int source_line,
1247  const char * format,
1248  ...);
1249 /* Errors */
1250 
1251 #define GLOBUS_I_FTP_CLIENT_ERROR_NULL_PARAMETER(param) \
1252  globus_error_construct_error(\
1253  GLOBUS_FTP_CLIENT_MODULE,\
1254  GLOBUS_NULL,\
1255  GLOBUS_FTP_CLIENT_ERROR_PARAMETER, \
1256  __FILE__, \
1257  _globus_func_name, \
1258  __LINE__, \
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,\
1263  GLOBUS_NULL,\
1264  GLOBUS_FTP_CLIENT_ERROR_PARAMETER, \
1265  __FILE__, \
1266  _globus_func_name, \
1267  __LINE__, \
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,\
1272  GLOBUS_NULL,\
1273  GLOBUS_FTP_CLIENT_ERROR_MEMORY, \
1274  __FILE__, \
1275  _globus_func_name, \
1276  __LINE__, \
1277  "a memory allocation failed")
1278 #define GLOBUS_I_FTP_CLIENT_ERROR_OPERATION_ABORTED() \
1279  globus_error_construct_error(\
1280  GLOBUS_FTP_CLIENT_MODULE,\
1281  GLOBUS_NULL,\
1282  GLOBUS_FTP_CLIENT_ERROR_ABORTED, \
1283  __FILE__, \
1284  _globus_func_name, \
1285  __LINE__, \
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,\
1290  err,\
1291  GLOBUS_FTP_CLIENT_ERROR_INTERNAL, \
1292  __FILE__, \
1293  _globus_func_name, \
1294  __LINE__, \
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,\
1299  GLOBUS_NULL,\
1300  GLOBUS_FTP_CLIENT_ERROR_IN_USE, \
1301  __FILE__, \
1302  _globus_func_name, \
1303  __LINE__, \
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,\
1308  GLOBUS_NULL,\
1309  GLOBUS_FTP_CLIENT_ERROR_NOT_IN_USE, \
1310  __FILE__, \
1311  _globus_func_name, \
1312  __LINE__, \
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,\
1317  GLOBUS_NULL,\
1318  GLOBUS_FTP_CLIENT_ERROR_COMPLETED, \
1319  __FILE__, \
1320  _globus_func_name, \
1321  __LINE__, \
1322  "already done")
1323 #define GLOBUS_I_FTP_CLIENT_ERROR_INVALID_OPERATION(op) \
1324  globus_error_construct_error(\
1325  GLOBUS_FTP_CLIENT_MODULE,\
1326  GLOBUS_NULL,\
1327  GLOBUS_FTP_CLIENT_ERROR_INVALID_OPERATION, \
1328  __FILE__, \
1329  _globus_func_name, \
1330  __LINE__, \
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,\
1336  GLOBUS_NULL,\
1337  GLOBUS_FTP_CLIENT_ERROR_UNEXPECTED_EOF, \
1338  __FILE__, \
1339  _globus_func_name, \
1340  __LINE__, \
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,\
1345  GLOBUS_NULL,\
1346  GLOBUS_FTP_CLIENT_ERROR_NO_SUCH_FILE, \
1347  __FILE__, \
1348  _globus_func_name, \
1349  __LINE__, \
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,\
1354  GLOBUS_NULL,\
1355  GLOBUS_FTP_CLIENT_ERROR_PROTOCOL, \
1356  __FILE__, \
1357  _globus_func_name, \
1358  __LINE__, \
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, \
1363  (response)->code, \
1364  (char *) (response)->response_buffer, \
1365  GLOBUS_FTP_CLIENT_ERROR_RESPONSE, \
1366  __FILE__, \
1367  _globus_func_name, \
1368  __LINE__, \
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,\
1373  GLOBUS_NULL,\
1374  GLOBUS_FTP_CLIENT_ERROR_FEATURE, \
1375  __FILE__, \
1376  _globus_func_name, \
1377  __LINE__, \
1378  "the server doesn't support the %s feature",\
1379  feature)
1380 #define GLOBUS_I_FTP_CLIENT_NO_RESTART_MARKER() \
1381  globus_error_construct_error( \
1382  GLOBUS_FTP_CLIENT_MODULE, \
1383  GLOBUS_NULL, \
1384  GLOBUS_FTP_CLIENT_ERROR_NO_RESTART_MARKER, \
1385  __FILE__, \
1386  _globus_func_name, \
1387  __LINE__, \
1388  "Could not find restart info\n")
1389 
1390 #endif
1391 
1392 #ifdef __cplusplus
1393 }
1394 #endif
1395 
1396 #endif /* GLOBUS_I_FTP_CLIENT_H */
char magic[24]
Definition: globus_i_ftp_client.h:525
globus_priority_q_t stalled_blocks
Definition: globus_i_ftp_client.h:563
globus_bool_t rfc1738_url
Definition: globus_i_ftp_client.h:208
char * url_string
Definition: globus_i_ftp_client.h:690
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:1204
Restart information management.
Definition: globus_i_ftp_client.h:773
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:1120
enum globus_ftp_control_mode_e globus_ftp_control_mode_t
GridFTP MODE values.
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:684
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:174
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:241
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:829
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:278
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:649
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:130
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:614
FTP Client handle implementation.
Definition: globus_i_ftp_client.h:522
Error Object Containing a String.
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:579
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
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:508
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:87
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
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:171
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:399
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:719
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
struct globus_fifo_s * globus_fifo_t
Definition: globus_fifo.h:48
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:543
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:1200
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:279
globus_ftp_client_probed_feature_t
Definition: globus_ftp_client.h:1212
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
Data connection caching information.
Definition: globus_i_ftp_client.h:491
Control tcpbuffer attribute structure.
Definition: globus_ftp_control.h:382
Control striping attribute union.
Definition: globus_ftp_control.h:209
Byte range report.This structure contains information about a single extent of data stored on an FTP ...
Definition: globus_i_ftp_client.h:175
globus_bool_t cache_all
Definition: globus_i_ftp_client.h:202
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:864
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:205
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:43
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_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:437
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_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:755
globus_ftp_client_plugin_command_mask_t
Definition: globus_ftp_client_plugin.h:70
Mutex.
Definition: globus_thread.h:107
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:1023
char * source_url
Definition: globus_i_ftp_client.h:537
globus_hashtable_t active_blocks
Definition: globus_i_ftp_client.h:569
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:1180
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:903
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
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:999
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
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_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:355
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
GridFTP Client.
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:940
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
int chmod_file_mode
Definition: globus_i_ftp_client.h:637
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:1054
globus_ftp_client_complete_callback_t callback
Definition: globus_i_ftp_client.h:552
Headers common to all of Globus.
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
Plugin Implementation.
Priority Queue Structure.
Definition: globus_priority_q.h:97
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(* 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:311
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:472
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
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:975
struct globus_i_ftp_client_target_s * source
Definition: globus_i_ftp_client.h:534
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:1088
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:317
struct globus_i_ftp_client_target_s * source
Definition: globus_i_ftp_client.h:497
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:1153
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
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:220
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:482
struct globus_i_ftp_client_handleattr_t globus_i_ftp_client_handleattr_t
Handle attributes.
Control parallelism attribute structure
Definition: globus_ftp_control.h:260
globus_list_t * url_cache
Definition: globus_i_ftp_client.h:223
globus_list_t * plugins
Definition: globus_i_ftp_client.h:231
globus_ftp_control_protection_t
GridFTP Protection Types.
Definition: globus_ftp_control.h:184
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_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:793
Module Descriptor.
Definition: globus_module.h:69
void(* globus_ftp_client_plugin_destroy_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific)
Definition: globus_ftp_client_plugin.h:147