globus_i_ftp_client.h
/*
* Copyright 1999-2006 University of Chicago
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef GLOBUS_DONT_DOCUMENT_INTERNAL
#endif /* GLOBUS_DONT_DOCUMENT_INTERNAL */
#ifndef GLOBUS_I_FTP_CLIENT_H
#define GLOBUS_I_FTP_CLIENT_H
#include "globus_common.h"
#include "globus_ftp_client.h"
#include "globus_ftp_client_plugin.h"
#include "globus_error_string.h"
#include "globus_xio.h"
#define GLOBUS_L_FTP_CLIENT_SSH_EXEC_SCRIPT "gridftp-ssh"
#define GLOBUS_L_FTP_CLIENT_CLIENTINFO_APPNAME "libglobus_ftp_client"
#ifdef __cplusplus
extern "C" {
#endif
#ifdef DEBUG_LOCKS
#define globus_i_ftp_client_handle_lock(handle) \
printf("locking handle %p at %s:%d\n", (handle), __FILE__, __LINE__), \
globus_mutex_lock(&(handle)->mutex)
#define globus_i_ftp_client_handle_unlock(handle) \
printf("unlocking handle %p at %s:%d\n", (handle), __FILE__, __LINE__), \
globus_mutex_unlock(&(handle)->mutex)
#define globus_i_ftp_client_data_target_lock(data_target) \
printf("locking data_target %p at %s:%d\n", (data_target), __FILE__, __LINE__), \
globus_mutex_lock(&(data_target)->mutex)
#define globus_i_ftp_client_data_target_unlock(data_target) \
printf("unlocking data_target %p at %s:%d\n", (data_target), __FILE__, __LINE__), \
globus_mutex_unlock(&(data_target)->mutex)
#else
#define globus_i_ftp_client_handle_lock(handle) \
globus_mutex_lock(&handle->mutex)
#define globus_i_ftp_client_handle_unlock(handle) \
globus_mutex_unlock(&handle->mutex)
#define globus_i_ftp_client_data_target_lock(data_target) \
globus_mutex_lock(&(data_target)->mutex)
#define globus_i_ftp_client_data_target_unlock(data_target) \
globus_mutex_unlock(&(data_target)->mutex)
#endif
#define GLOBUS_FTP_CLIENT_MAGIC_STRING "FTPClient-1.0"
#ifdef BUILD_DEBUG
#define GLOBUS_I_FTP_CLIENT_BAD_MAGIC(h) \
(!(h && (*h) && \
!strcmp(((*h))->magic, \
GLOBUS_FTP_CLIENT_MAGIC_STRING)))
#else
#define GLOBUS_I_FTP_CLIENT_BAD_MAGIC(h) 0
#endif
extern int globus_i_ftp_client_debug_level;
#ifdef BUILD_DEBUG
#define globus_i_ftp_client_debug(Level) \
(globus_i_ftp_client_debug_level >= (Level))
#define globus_i_ftp_client_debug_printf(level, message) \
do { \
if (globus_i_ftp_client_debug(level)) \
{ \
globus_libc_fprintf message; \
} \
} while (0)
#define globus_i_ftp_client_debug_states(level, handle) \
do { \
if(handle != NULL) \
{ \
globus_i_ftp_client_debug_printf(level, (stderr, \
" handle state = %s\n" \
" source state = %s\n" \
" dest state = %s\n", \
globus_i_ftp_handle_state_to_string(handle->state), \
handle->source \
? globus_i_ftp_target_state_to_string(handle->source->state) \
: "NULL", \
handle->dest \
? globus_i_ftp_target_state_to_string(handle->dest->state) \
: "NULL")); \
} \
else \
{ \
globus_i_ftp_client_debug_printf(level, (stderr, "handle is null\n")); \
} \
} while(0)
#else
#define globus_i_ftp_client_debug_printf(level, message)
#define globus_i_ftp_client_debug_states(level, handle)
#endif
/* send NOOP if idle for more than 15 seconds */
#define GLOBUS_I_FTP_CLIENT_NOOP_IDLE 15
/*
* Attributes
*/
typedef struct globus_i_ftp_client_operationattr_t
{
globus_ftp_control_parallelism_t parallelism;
globus_bool_t force_striped;
globus_ftp_control_layout_t layout;
globus_ftp_control_tcpbuffer_t buffer;
globus_bool_t using_default_auth;
globus_ftp_control_auth_info_t auth_info;
globus_ftp_control_type_t type;
globus_ftp_control_mode_t mode;
globus_bool_t list_uses_data_mode;
globus_bool_t append;
globus_ftp_control_dcau_t dcau;
globus_ftp_control_protection_t data_prot;
globus_bool_t resume_third_party;
globus_bool_t read_all;
globus_ftp_client_data_callback_t read_all_intermediate_callback;
void * read_all_intermediate_callback_arg;
globus_bool_t allow_ipv6;
globus_off_t allocated_size;
globus_bool_t cwd_first;
char * authz_assert;
globus_bool_t cache_authz_assert;
globus_bool_t delayed_pasv;
char * net_stack_str;
char * disk_stack_str;
char * module_alg_str;
char * clientinfo_argstr;
int dcsc_type;
void * dcsc_cred;
gss_cred_id_t dcsc_p_cred;
char * dcsc_blob;
}
globus_i_ftp_client_operationattr_t;
typedef struct
{
globus_off_t offset;
globus_off_t end_offset;
}
globus_i_ftp_client_range_t;
typedef struct globus_i_ftp_client_handleattr_t
{
globus_bool_t cache_all;
globus_bool_t rfc1738_url;
globus_bool_t gridftp2;
globus_list_t * url_cache;
globus_list_t * plugins;
globus_size_t outstanding_commands;
globus_ftp_client_pipeline_callback_t pipeline_callback;
void * pipeline_arg;
globus_bool_t pipeline_done;
/*
* NETLOGGER
*/
globus_bool_t nl_ftp;
globus_bool_t nl_io;
globus_netlogger_handle_t * nl_handle;
/* client info */
char * clientinfo_app_name;
char * clientinfo_app_ver;
char * clientinfo_other;
}
globus_i_ftp_client_handleattr_t;
/* Handles */
typedef enum
{
GLOBUS_FTP_CLIENT_HANDLE_START,
GLOBUS_FTP_CLIENT_HANDLE_SOURCE_CONNECT,
GLOBUS_FTP_CLIENT_HANDLE_SOURCE_SETUP_CONNECTION,
GLOBUS_FTP_CLIENT_HANDLE_SOURCE_LIST,
GLOBUS_FTP_CLIENT_HANDLE_SOURCE_RETR_OR_ERET,
GLOBUS_FTP_CLIENT_HANDLE_DEST_CONNECT,
GLOBUS_FTP_CLIENT_HANDLE_DEST_SETUP_CONNECTION,
GLOBUS_FTP_CLIENT_HANDLE_DEST_STOR_OR_ESTO,
GLOBUS_FTP_CLIENT_HANDLE_ABORT,
GLOBUS_FTP_CLIENT_HANDLE_RESTART,
GLOBUS_FTP_CLIENT_HANDLE_FAILURE,
/* This is called when one side of a third-party transfer has sent
* it's positive or negative response to the transfer, but the
* other hasn't yet done the same.
*/
GLOBUS_FTP_CLIENT_HANDLE_THIRD_PARTY_TRANSFER,
GLOBUS_FTP_CLIENT_HANDLE_THIRD_PARTY_TRANSFER_ONE_COMPLETE,
GLOBUS_FTP_CLIENT_HANDLE_FINALIZE
}
globus_ftp_client_handle_state_t;
typedef enum
{
GLOBUS_FTP_CLIENT_IDLE,
GLOBUS_FTP_CLIENT_CHMOD,
GLOBUS_FTP_CLIENT_CHGRP,
GLOBUS_FTP_CLIENT_UTIME,
GLOBUS_FTP_CLIENT_SYMLINK,
GLOBUS_FTP_CLIENT_DELETE,
GLOBUS_FTP_CLIENT_MKDIR,
GLOBUS_FTP_CLIENT_RMDIR,
GLOBUS_FTP_CLIENT_MOVE,
GLOBUS_FTP_CLIENT_LIST,
GLOBUS_FTP_CLIENT_NLST,
GLOBUS_FTP_CLIENT_MLSD,
GLOBUS_FTP_CLIENT_MLSR,
GLOBUS_FTP_CLIENT_MLST,
GLOBUS_FTP_CLIENT_STAT,
GLOBUS_FTP_CLIENT_GET,
GLOBUS_FTP_CLIENT_PUT,
GLOBUS_FTP_CLIENT_TRANSFER,
GLOBUS_FTP_CLIENT_MDTM,
GLOBUS_FTP_CLIENT_SIZE,
GLOBUS_FTP_CLIENT_CKSM,
GLOBUS_FTP_CLIENT_FEAT,
GLOBUS_FTP_CLIENT_CWD
}
globus_i_ftp_client_operation_t;
typedef enum
{
GLOBUS_FTP_CLIENT_TARGET_START,
GLOBUS_FTP_CLIENT_TARGET_CONNECT,
GLOBUS_FTP_CLIENT_TARGET_AUTHENTICATE,
GLOBUS_FTP_CLIENT_TARGET_SETUP_SITE_FAULT,
GLOBUS_FTP_CLIENT_TARGET_SITE_FAULT,
GLOBUS_FTP_CLIENT_TARGET_SETUP_SITE_HELP,
GLOBUS_FTP_CLIENT_TARGET_SITE_HELP,
GLOBUS_FTP_CLIENT_TARGET_FEAT,
GLOBUS_FTP_CLIENT_TARGET_SETUP_CONNECTION,
GLOBUS_FTP_CLIENT_TARGET_SETUP_CLIENTINFO,
GLOBUS_FTP_CLIENT_TARGET_CLIENTINFO,
GLOBUS_FTP_CLIENT_TARGET_SETUP_TYPE,
GLOBUS_FTP_CLIENT_TARGET_TYPE,
GLOBUS_FTP_CLIENT_TARGET_SETUP_MODE,
GLOBUS_FTP_CLIENT_TARGET_MODE,
GLOBUS_FTP_CLIENT_TARGET_SETUP_SIZE,
GLOBUS_FTP_CLIENT_TARGET_SIZE,
GLOBUS_FTP_CLIENT_TARGET_SETUP_CKSM,
GLOBUS_FTP_CLIENT_TARGET_CKSM,
GLOBUS_FTP_CLIENT_TARGET_SETUP_DCSC,
GLOBUS_FTP_CLIENT_TARGET_DCSC,
GLOBUS_FTP_CLIENT_TARGET_SETUP_DCAU,
GLOBUS_FTP_CLIENT_TARGET_DCAU,
GLOBUS_FTP_CLIENT_TARGET_SETUP_PBSZ,
GLOBUS_FTP_CLIENT_TARGET_PBSZ,
GLOBUS_FTP_CLIENT_TARGET_SETUP_PROT,
GLOBUS_FTP_CLIENT_TARGET_PROT,
GLOBUS_FTP_CLIENT_TARGET_SETUP_BUFSIZE,
GLOBUS_FTP_CLIENT_TARGET_BUFSIZE,
GLOBUS_FTP_CLIENT_TARGET_SETUP_REMOTE_RETR_OPTS,
GLOBUS_FTP_CLIENT_TARGET_REMOTE_RETR_OPTS,
GLOBUS_FTP_CLIENT_TARGET_SETUP_LOCAL_RETR_OPTS,
GLOBUS_FTP_CLIENT_TARGET_LOCAL_RETR_OPTS,
GLOBUS_FTP_CLIENT_TARGET_OPTS_PASV_DELAYED,
GLOBUS_FTP_CLIENT_TARGET_SETUP_PASV,
GLOBUS_FTP_CLIENT_TARGET_PASV,
GLOBUS_FTP_CLIENT_TARGET_SETUP_PORT,
GLOBUS_FTP_CLIENT_TARGET_PORT,
GLOBUS_FTP_CLIENT_TARGET_SETUP_AUTHZ_ASSERT,
GLOBUS_FTP_CLIENT_TARGET_AUTHZ_ASSERT,
GLOBUS_FTP_CLIENT_TARGET_SETUP_SETNETSTACK,
GLOBUS_FTP_CLIENT_TARGET_SETNETSTACK,
GLOBUS_FTP_CLIENT_TARGET_SETUP_SETDISKSTACK,
GLOBUS_FTP_CLIENT_TARGET_SETDISKSTACK,
GLOBUS_FTP_CLIENT_TARGET_SETUP_ALLO,
GLOBUS_FTP_CLIENT_TARGET_ALLO,
GLOBUS_FTP_CLIENT_TARGET_SETUP_REST_STREAM,
GLOBUS_FTP_CLIENT_TARGET_SETUP_REST_EB,
GLOBUS_FTP_CLIENT_TARGET_REST,
GLOBUS_FTP_CLIENT_TARGET_SETUP_OPERATION,
GLOBUS_FTP_CLIENT_TARGET_SETUP_LIST,
GLOBUS_FTP_CLIENT_TARGET_SETUP_LIST_CWD,
GLOBUS_FTP_CLIENT_TARGET_SETUP_GET,
GLOBUS_FTP_CLIENT_TARGET_SETUP_PUT,
GLOBUS_FTP_CLIENT_TARGET_SETUP_TRANSFER_SOURCE,
GLOBUS_FTP_CLIENT_TARGET_SETUP_TRANSFER_DEST,
GLOBUS_FTP_CLIENT_TARGET_SETUP_CHMOD,
GLOBUS_FTP_CLIENT_TARGET_SETUP_CHGRP,
GLOBUS_FTP_CLIENT_TARGET_SETUP_UTIME,
GLOBUS_FTP_CLIENT_TARGET_SETUP_SYMLINK,
GLOBUS_FTP_CLIENT_TARGET_SETUP_DELETE,
GLOBUS_FTP_CLIENT_TARGET_SETUP_MKDIR,
GLOBUS_FTP_CLIENT_TARGET_SETUP_RMDIR,
GLOBUS_FTP_CLIENT_TARGET_SETUP_RNFR,
GLOBUS_FTP_CLIENT_TARGET_SETUP_RNTO,
GLOBUS_FTP_CLIENT_TARGET_SETUP_MDTM,
GLOBUS_FTP_CLIENT_TARGET_SETUP_MLST,
GLOBUS_FTP_CLIENT_TARGET_SETUP_STAT,
GLOBUS_FTP_CLIENT_TARGET_SETUP_GETPUT_GET,
GLOBUS_FTP_CLIENT_TARGET_SETUP_GETPUT_PUT,
GLOBUS_FTP_CLIENT_TARGET_MLST,
GLOBUS_FTP_CLIENT_TARGET_STAT,
GLOBUS_FTP_CLIENT_TARGET_LIST,
GLOBUS_FTP_CLIENT_TARGET_RETR,
GLOBUS_FTP_CLIENT_TARGET_STOR,
GLOBUS_FTP_CLIENT_TARGET_MDTM,
GLOBUS_FTP_CLIENT_TARGET_GETPUT_PASV_GET,
GLOBUS_FTP_CLIENT_TARGET_GETPUT_PASV_PUT,
GLOBUS_FTP_CLIENT_TARGET_GETPUT_PASV_TRANSFER,
GLOBUS_FTP_CLIENT_TARGET_READY_FOR_DATA,
GLOBUS_FTP_CLIENT_TARGET_NEED_LAST_BLOCK,
GLOBUS_FTP_CLIENT_TARGET_NEED_EMPTY_QUEUE,
GLOBUS_FTP_CLIENT_TARGET_NEED_EMPTY_AND_COMPLETE,
GLOBUS_FTP_CLIENT_TARGET_NEED_COMPLETE,
GLOBUS_FTP_CLIENT_TARGET_COMPLETED_OPERATION,
GLOBUS_FTP_CLIENT_TARGET_NOOP,
GLOBUS_FTP_CLIENT_TARGET_FAULT,
GLOBUS_FTP_CLIENT_TARGET_CLOSED,
GLOBUS_FTP_CLIENT_TARGET_SETUP_CWD
}
globus_ftp_client_target_state_t;
typedef struct globus_i_ftp_client_url_ent_s
{
globus_i_ftp_client_operation_t op;
char * source_url;
globus_url_t src_url;
char * dest_url;
globus_url_t dst_url;
} globus_i_ftp_client_url_ent_t;
/* Do not access members of the feature
structures below. Instead, use interface functions:
globus_i_ftp_client_feature_get()
globus_i_ftp_client_feature_set()
globus_i_ftp_client_features_init()
globus_i_ftp_client_features_destroy()
This will facilitate future changes in the structures.
*/
typedef struct globus_i_ftp_client_features_s
{
globus_ftp_client_tristate_t list[GLOBUS_FTP_CLIENT_FEATURE_MAX];
} globus_i_ftp_client_features_t;
/* Should it be needed to store feature parameters
beside feature names, these are the proposed structures:
typedef struct globus_i_ftp_client_feature_s{
globus_ftp_client_tristate_t supported;
char ** attrs;
} globus_i_ftp_client_feature_t;
typedef struct globus_i_ftp_client_features_s
{
globus_ftp_client_feature_t list[GLOBUS_FTP_CLIENT_FEATURE_MAX];
} globus_i_ftp_client_features_t;
*/
globus_i_ftp_client_features_t *
globus_i_ftp_client_features_init();
globus_result_t
globus_i_ftp_client_features_destroy(
globus_i_ftp_client_features_t * features);
globus_ftp_client_tristate_t
globus_i_ftp_client_feature_get(
globus_i_ftp_client_features_t * features,
globus_ftp_client_probed_feature_t feature);
void
globus_i_ftp_client_feature_set(
globus_i_ftp_client_features_t * features,
globus_ftp_client_probed_feature_t feature,
globus_ftp_client_tristate_t value);
char *
globus_i_ftp_client_find_ssh_client_program();
typedef struct
{
struct globus_i_ftp_client_target_s * source;
struct globus_i_ftp_client_target_s * dest;
globus_i_ftp_client_operation_t operation;
}
globus_i_ftp_client_data_target_t;
typedef struct globus_i_ftp_client_handle_t
{
char magic[24];
globus_ftp_client_handle_t * handle;
struct globus_i_ftp_client_target_s * source;
char * source_url;
struct globus_i_ftp_client_target_s * dest;
char * dest_url;
globus_i_ftp_client_handleattr_t attr;
globus_i_ftp_client_operation_t op;
globus_ftp_client_complete_callback_t callback;
void * callback_arg;
globus_ftp_client_handle_state_t state;
globus_priority_q_t stalled_blocks;
globus_hashtable_t active_blocks;
int num_active_blocks;
globus_ftp_control_host_port_t * pasv_address;
int num_pasv_addresses;
globus_object_t * err;
struct globus_i_ftp_client_restart_s * restart_info;
int notify_in_progress;
globus_bool_t notify_abort;
globus_bool_t notify_restart;
globus_off_t source_size;
globus_ftp_client_restart_marker_t restart_marker;
globus_off_t partial_offset;
globus_off_t partial_end_offset;
globus_off_t base_offset;
globus_off_t read_all_biggest_offset;
globus_abstime_t * modification_time_pointer;
globus_off_t * size_pointer;
globus_i_ftp_client_features_t * features_pointer;
globus_byte_t ** mlst_buffer_pointer;
globus_size_t * mlst_buffer_length_pointer;
int chmod_file_mode;
char * chgrp_group;
struct tm utime_time;
globus_mutex_t mutex;
char * checksum;
globus_off_t checksum_offset;
globus_off_t checksum_length;
char * checksum_alg;
globus_fifo_t src_op_queue;
globus_fifo_t dst_op_queue;
globus_fifo_t src_response_pending_queue;
globus_fifo_t dst_response_pending_queue;
int no_callback_count;
globus_bool_t source_pasv;
globus_bool_t tried_both_pasv;
void * user_pointer;
}
globus_i_ftp_client_handle_t;
typedef struct globus_i_ftp_client_target_s
{
globus_ftp_client_target_state_t state;
globus_ftp_control_handle_t * control_handle;
char * url_string;
globus_url_t url;
globus_ftp_control_auth_info_t auth_info;
globus_i_ftp_client_features_t * features;
globus_ftp_control_dcau_t dcau;
globus_ftp_control_protection_t data_prot;
unsigned long pbsz;
globus_ftp_control_type_t type;
globus_ftp_control_tcpbuffer_t tcp_buffer;
globus_ftp_control_mode_t mode;
globus_ftp_control_structure_t structure;
globus_ftp_control_layout_t layout;
globus_ftp_control_parallelism_t parallelism;
char * authz_assert;
char * net_stack_str;
char * disk_stack_str;
globus_bool_t delayed_pasv;
globus_i_ftp_client_operationattr_t * attr;
globus_i_ftp_client_handle_t * owner;
globus_i_ftp_client_data_target_t cached_data_conn;
globus_ftp_client_plugin_command_mask_t mask;
/* used for determining need for NOOP */
globus_abstime_t last_access;
globus_bool_t src_command_sent;
globus_bool_t dst_command_sent;
globus_list_t * net_stack_list;
char * clientinfo_argstr;
int dcsc_type;
char * dcsc_blob;
gss_cred_id_t dcsc_p_cred;
} globus_i_ftp_client_target_t;
typedef struct
{
globus_url_t url;
globus_i_ftp_client_target_t * target;
}
globus_i_ftp_client_cache_entry_t;
typedef struct globus_i_ftp_client_restart_s
{
char * source_url;
globus_i_ftp_client_operationattr_t * source_attr;
char * dest_url;
globus_i_ftp_client_operationattr_t * dest_attr;
globus_ftp_client_restart_marker_t marker;
globus_abstime_t when;
globus_callback_handle_t callback_handle;
}
globus_i_ftp_client_restart_t;
typedef struct globus_i_ftp_client_plugin_t
{
char * plugin_name;
globus_ftp_client_plugin_t * plugin;
globus_ftp_client_plugin_copy_t copy_func;
globus_ftp_client_plugin_destroy_t destroy_func;
globus_ftp_client_plugin_chmod_t chmod_func;
globus_ftp_client_plugin_chgrp_t chgrp_func;
globus_ftp_client_plugin_utime_t utime_func;
globus_ftp_client_plugin_symlink_t symlink_func;
globus_ftp_client_plugin_delete_t delete_func;
globus_ftp_client_plugin_mkdir_t mkdir_func;
globus_ftp_client_plugin_rmdir_t rmdir_func;
globus_ftp_client_plugin_move_t move_func;
globus_ftp_client_plugin_feat_t feat_func;
globus_ftp_client_plugin_verbose_list_t verbose_list_func;
globus_ftp_client_plugin_machine_list_t machine_list_func;
globus_ftp_client_plugin_recursive_list_t recursive_list_func;
globus_ftp_client_plugin_list_t list_func;
globus_ftp_client_plugin_mlst_t mlst_func;
globus_ftp_client_plugin_stat_t stat_func;
globus_ftp_client_plugin_get_t get_func;
globus_ftp_client_plugin_put_t put_func;
globus_ftp_client_plugin_third_party_transfer_t
third_party_transfer_func;
globus_ftp_client_plugin_modification_time_t
modification_time_func;
globus_ftp_client_plugin_size_t size_func;
globus_ftp_client_plugin_cksm_t cksm_func;
globus_ftp_client_plugin_abort_t abort_func;
globus_ftp_client_plugin_connect_t connect_func;
globus_ftp_client_plugin_authenticate_t authenticate_func;
globus_ftp_client_plugin_read_t read_func;
globus_ftp_client_plugin_write_t write_func;
globus_ftp_client_plugin_data_t data_func;
globus_ftp_client_plugin_command_t command_func;
globus_ftp_client_plugin_response_t response_func;
globus_ftp_client_plugin_fault_t fault_func;
globus_ftp_client_plugin_complete_t complete_func;
globus_ftp_client_plugin_command_mask_t command_mask;
void * plugin_specific;
} globus_i_ftp_client_plugin_t;
#ifndef DOXYGEN
/* globus_ftp_client_attr.c */
globus_result_t
globus_i_ftp_client_handleattr_copy(
globus_i_ftp_client_handleattr_t * dest,
globus_i_ftp_client_handleattr_t * src);
void
globus_i_ftp_client_handleattr_destroy(
globus_i_ftp_client_handleattr_t * i_attr);
int
globus_i_ftp_client_plugin_list_search(
void * datum,
void * arg);
/* globus_ftp_client.c */
void
globus_i_ftp_client_handle_is_active(globus_ftp_client_handle_t *handle);
void
globus_i_ftp_client_handle_is_not_active(globus_ftp_client_handle_t *handle);
void
globus_i_ftp_client_control_is_active(globus_ftp_control_handle_t * handle);
void
globus_i_ftp_client_control_is_not_active(globus_ftp_control_handle_t * handle);
const char *
globus_i_ftp_op_to_string(
globus_i_ftp_client_operation_t op);
const char *
globus_i_ftp_target_state_to_string(
globus_ftp_client_target_state_t target_state);
const char *
globus_i_ftp_handle_state_to_string(
globus_ftp_client_handle_state_t handle_state);
int
globus_i_ftp_client_count_digits(
globus_off_t num);
extern globus_ftp_control_auth_info_t globus_i_ftp_client_default_auth_info;
extern globus_reltime_t globus_i_ftp_client_noop_idle;
extern globus_xio_stack_t ftp_client_i_popen_stack;
extern globus_xio_driver_t ftp_client_i_popen_driver;
extern globus_bool_t ftp_client_i_popen_ready;
/* globus_ftp_client_handle.c */
globus_object_t *
globus_i_ftp_client_target_find(
globus_i_ftp_client_handle_t * handle,
const char * url,
globus_i_ftp_client_operationattr_t * attr,
globus_i_ftp_client_target_t ** target);
void
globus_i_ftp_client_target_release(
globus_i_ftp_client_handle_t * handle,
globus_i_ftp_client_target_t * target);
void
globus_i_ftp_client_restart_info_delete(
globus_i_ftp_client_restart_t * restart_info);
globus_bool_t
globus_i_ftp_client_can_reuse_data_conn(
globus_i_ftp_client_handle_t * client_handle);
globus_result_t
globus_i_ftp_client_cache_add(
globus_list_t ** cache,
const char * url,
globus_bool_t rfc1738_url);
globus_result_t
globus_i_ftp_client_cache_remove(
globus_list_t ** cache,
const char * url,
globus_bool_t rfc1738_url);
globus_result_t
globus_i_ftp_client_cache_destroy(
globus_list_t ** cache);
/* globus_ftp_client_data.c */
int
globus_i_ftp_client_data_cmp(
void * priority_1,
void * priority_2);
globus_object_t *
globus_i_ftp_client_data_dispatch_queue(
globus_i_ftp_client_handle_t * handle);
void
globus_i_ftp_client_data_flush(
globus_i_ftp_client_handle_t * handle);
/* globus_ftp_client_transfer.c */
void
globus_i_ftp_client_transfer_complete(
globus_i_ftp_client_handle_t * client_handle);
globus_object_t *
globus_i_ftp_client_restart(
globus_i_ftp_client_handle_t * handle,
globus_i_ftp_client_restart_t * restart_info);
/* globus_ftp_client_plugin.c */
void
globus_i_ftp_client_plugin_notify_list(
globus_i_ftp_client_handle_t * handle,
const char * url,
globus_i_ftp_client_operationattr_t * attr);
void
globus_i_ftp_client_plugin_notify_verbose_list(
globus_i_ftp_client_handle_t * handle,
const char * url,
globus_i_ftp_client_operationattr_t * attr);
void
globus_i_ftp_client_plugin_notify_machine_list(
globus_i_ftp_client_handle_t * handle,
const char * url,
globus_i_ftp_client_operationattr_t * attr);
void
globus_i_ftp_client_plugin_notify_recursive_list(
globus_i_ftp_client_handle_t * handle,
const char * url,
globus_i_ftp_client_operationattr_t * attr);
void
globus_i_ftp_client_plugin_notify_mlst(
globus_i_ftp_client_handle_t * handle,
const char * url,
globus_i_ftp_client_operationattr_t * attr);
void
globus_i_ftp_client_plugin_notify_stat(
globus_i_ftp_client_handle_t * handle,
const char * url,
globus_i_ftp_client_operationattr_t * attr);
void
globus_i_ftp_client_plugin_notify_chmod(
globus_i_ftp_client_handle_t * handle,
const char * url,
int mode,
globus_i_ftp_client_operationattr_t * attr);
void
globus_i_ftp_client_plugin_notify_chgrp(
globus_i_ftp_client_handle_t * handle,
const char * url,
const char * group,
globus_i_ftp_client_operationattr_t * attr);
void
globus_i_ftp_client_plugin_notify_utime(
globus_i_ftp_client_handle_t * handle,
const char * url,
const struct tm * utime_time,
globus_i_ftp_client_operationattr_t * attr);
void
globus_i_ftp_client_plugin_notify_symlink(
globus_i_ftp_client_handle_t * handle,
const char * url,
const char * link_url,
globus_i_ftp_client_operationattr_t * attr);
void
globus_i_ftp_client_plugin_notify_cksm(
globus_i_ftp_client_handle_t * handle,
const char * url,
globus_off_t offset,
globus_off_t length,
const char * algorithm,
globus_i_ftp_client_operationattr_t * attr);
void
globus_i_ftp_client_plugin_notify_delete(
globus_i_ftp_client_handle_t * handle,
const char * url,
globus_i_ftp_client_operationattr_t * attr);
void
globus_i_ftp_client_plugin_notify_feat(
globus_i_ftp_client_handle_t * handle,
const char * url,
globus_i_ftp_client_operationattr_t * attr);
void
globus_i_ftp_client_plugin_notify_mkdir(
globus_i_ftp_client_handle_t * handle,
const char * url,
globus_i_ftp_client_operationattr_t * attr);
void
globus_i_ftp_client_plugin_notify_rmdir(
globus_i_ftp_client_handle_t * handle,
const char * url,
globus_i_ftp_client_operationattr_t * attr);
void
globus_i_ftp_client_plugin_notify_move(
globus_i_ftp_client_handle_t * handle,
const char * source_url,
const char * dest_url,
globus_i_ftp_client_operationattr_t * attr);
void
globus_i_ftp_client_plugin_notify_get(
globus_i_ftp_client_handle_t * handle,
const char * url,
globus_i_ftp_client_operationattr_t * attr,
const globus_ftp_client_restart_marker_t * restart);
void
globus_i_ftp_client_plugin_notify_put(
globus_i_ftp_client_handle_t * handle,
const char * url,
globus_i_ftp_client_operationattr_t * attr,
const globus_ftp_client_restart_marker_t * restart);
void
globus_i_ftp_client_plugin_notify_transfer(
globus_i_ftp_client_handle_t * handle,
const char * source_url,
globus_i_ftp_client_operationattr_t * source_attr,
const char * dest_url,
globus_i_ftp_client_operationattr_t * dest_attr,
const globus_ftp_client_restart_marker_t * restart);
void
globus_i_ftp_client_plugin_notify_modification_time(
globus_i_ftp_client_handle_t * handle,
const char * url,
globus_i_ftp_client_operationattr_t * attr);
void
globus_i_ftp_client_plugin_notify_size(
globus_i_ftp_client_handle_t * handle,
const char * url,
globus_i_ftp_client_operationattr_t * attr);
void
globus_i_ftp_client_plugin_notify_restart(
globus_i_ftp_client_handle_t * handle);
void
globus_i_ftp_client_plugin_notify_connect(
globus_i_ftp_client_handle_t * handle,
const char * url);
void
globus_i_ftp_client_plugin_notify_authenticate(
globus_i_ftp_client_handle_t * handle,
const char * url,
const globus_ftp_control_auth_info_t * auth_info);
void
globus_i_ftp_client_plugin_notify_abort(
globus_i_ftp_client_handle_t * handle);
void
globus_i_ftp_client_plugin_notify_read(
globus_i_ftp_client_handle_t * handle,
const globus_byte_t * buffer,
globus_size_t buffer_length);
void
globus_i_ftp_client_plugin_notify_write(
globus_i_ftp_client_handle_t * handle,
const globus_byte_t * buffer,
globus_size_t buffer_length,
globus_off_t offset,
globus_bool_t eof);
void
globus_i_ftp_client_plugin_notify_data(
globus_i_ftp_client_handle_t * handle,
globus_object_t * error,
const globus_byte_t * buffer,
globus_size_t buffer_length,
globus_off_t offset,
globus_bool_t eof);
void
globus_i_ftp_client_plugin_notify_command(
globus_i_ftp_client_handle_t * handle,
const char * url,
globus_ftp_client_plugin_command_mask_t command_mask,
const char * command_spec,
...);
void
globus_i_ftp_client_plugin_notify_response(
globus_i_ftp_client_handle_t * handle,
const char * url,
globus_ftp_client_plugin_command_mask_t command_mask,
globus_object_t * error,
const globus_ftp_control_response_t * ftp_response);
void
globus_i_ftp_client_plugin_notify_fault(
globus_i_ftp_client_handle_t * handle,
const char * url,
globus_object_t * error);
void
globus_i_ftp_client_plugin_notify_complete(
globus_i_ftp_client_handle_t * handle);
/* globus_ftp_client_restart.c */
globus_object_t *
globus_i_ftp_client_restart_register_oneshot(
globus_i_ftp_client_handle_t * handle);
/* globus_ftp_client_transfer.c */
globus_object_t *
globus_l_ftp_client_url_parse(
const char * url_string,
globus_url_t * url,
globus_bool_t rfc1738_url);
void
globus_i_ftp_client_force_close_callback(
void * user_arg,
globus_ftp_control_handle_t * handle,
globus_object_t * error,
globus_ftp_control_response_t * response);
globus_object_t *
globus_i_ftp_client_target_activate(
globus_i_ftp_client_handle_t * handle,
globus_i_ftp_client_target_t * target,
globus_bool_t * registered);
/* globus_ftp_client_state.c */
void
globus_i_ftp_client_response_callback(
void * user_arg,
globus_ftp_control_handle_t * handle,
globus_object_t * error,
globus_ftp_control_response_t * response);
/* globus_ftp_client_data.c */
void
globus_l_ftp_client_complete_kickout(
void * user_arg);
globus_object_t *
globus_i_ftp_client_wrap_ftp_error(
globus_module_descriptor_t * base_source,
int code,
const char * message,
int error_type,
const char * source_file,
const char * source_func,
int source_line,
const char * format,
...);
/* Errors */
#define GLOBUS_I_FTP_CLIENT_ERROR_NULL_PARAMETER(param) \
globus_error_construct_error(\
GLOBUS_FTP_CLIENT_MODULE,\
GLOBUS_NULL,\
GLOBUS_FTP_CLIENT_ERROR_PARAMETER, \
__FILE__, \
_globus_func_name, \
__LINE__, \
"a NULL value for %s was used", param)
#define GLOBUS_I_FTP_CLIENT_ERROR_INVALID_PARAMETER(param) \
globus_error_construct_error(\
GLOBUS_FTP_CLIENT_MODULE,\
GLOBUS_NULL,\
GLOBUS_FTP_CLIENT_ERROR_PARAMETER, \
__FILE__, \
_globus_func_name, \
__LINE__, \
"an invalid value for %s was used", param)
#define GLOBUS_I_FTP_CLIENT_ERROR_OUT_OF_MEMORY() \
globus_error_construct_error(\
GLOBUS_FTP_CLIENT_MODULE,\
GLOBUS_NULL,\
GLOBUS_FTP_CLIENT_ERROR_MEMORY, \
__FILE__, \
_globus_func_name, \
__LINE__, \
"a memory allocation failed")
#define GLOBUS_I_FTP_CLIENT_ERROR_OPERATION_ABORTED() \
globus_error_construct_error(\
GLOBUS_FTP_CLIENT_MODULE,\
GLOBUS_NULL,\
GLOBUS_FTP_CLIENT_ERROR_ABORTED, \
__FILE__, \
_globus_func_name, \
__LINE__, \
"the operation was aborted")
#define GLOBUS_I_FTP_CLIENT_ERROR_INTERNAL_ERROR(err) \
globus_error_construct_error(\
GLOBUS_FTP_CLIENT_MODULE,\
err,\
GLOBUS_FTP_CLIENT_ERROR_INTERNAL, \
__FILE__, \
_globus_func_name, \
__LINE__, \
"an internal error occurred in globus_ftp_client")
#define GLOBUS_I_FTP_CLIENT_ERROR_OBJECT_IN_USE(obj) \
globus_error_construct_error(\
GLOBUS_FTP_CLIENT_MODULE,\
GLOBUS_NULL,\
GLOBUS_FTP_CLIENT_ERROR_IN_USE, \
__FILE__, \
_globus_func_name, \
__LINE__, \
"%s was already in use", obj)
#define GLOBUS_I_FTP_CLIENT_ERROR_OBJECT_NOT_IN_USE(obj) \
globus_error_construct_error(\
GLOBUS_FTP_CLIENT_MODULE,\
GLOBUS_NULL,\
GLOBUS_FTP_CLIENT_ERROR_NOT_IN_USE, \
__FILE__, \
_globus_func_name, \
__LINE__, \
"%s was not in use", obj)
#define GLOBUS_I_FTP_CLIENT_ERROR_ALREADY_DONE() \
globus_error_construct_error(\
GLOBUS_FTP_CLIENT_MODULE,\
GLOBUS_NULL,\
GLOBUS_FTP_CLIENT_ERROR_COMPLETED, \
__FILE__, \
_globus_func_name, \
__LINE__, \
"already done")
#define GLOBUS_I_FTP_CLIENT_ERROR_INVALID_OPERATION(op) \
globus_error_construct_error(\
GLOBUS_FTP_CLIENT_MODULE,\
GLOBUS_NULL,\
GLOBUS_FTP_CLIENT_ERROR_INVALID_OPERATION, \
__FILE__, \
_globus_func_name, \
__LINE__, \
"%s not allowed here",\
globus_i_ftp_op_to_string(op))
#define GLOBUS_I_FTP_CLIENT_ERROR_EOF() \
globus_error_construct_error(\
GLOBUS_FTP_CLIENT_MODULE,\
GLOBUS_NULL,\
GLOBUS_FTP_CLIENT_ERROR_UNEXPECTED_EOF, \
__FILE__, \
_globus_func_name, \
__LINE__, \
"EOF has been reached")
#define GLOBUS_I_FTP_CLIENT_ERROR_NO_SUCH_FILE(file) \
globus_error_construct_error(\
GLOBUS_FTP_CLIENT_MODULE,\
GLOBUS_NULL,\
GLOBUS_FTP_CLIENT_ERROR_NO_SUCH_FILE, \
__FILE__, \
_globus_func_name, \
__LINE__, \
"%s does not exist", file)
#define GLOBUS_I_FTP_CLIENT_ERROR_PROTOCOL_ERROR() \
globus_error_construct_error(\
GLOBUS_FTP_CLIENT_MODULE,\
GLOBUS_NULL,\
GLOBUS_FTP_CLIENT_ERROR_PROTOCOL, \
__FILE__, \
_globus_func_name, \
__LINE__, \
"a protocol error occurred")
#define GLOBUS_I_FTP_CLIENT_ERROR_RESPONSE(response) \
globus_i_ftp_client_wrap_ftp_error( \
GLOBUS_FTP_CLIENT_MODULE, \
(response)->code, \
(char *) (response)->response_buffer, \
GLOBUS_FTP_CLIENT_ERROR_RESPONSE, \
__FILE__, \
_globus_func_name, \
__LINE__, \
"the server responded with an error")
#define GLOBUS_I_FTP_CLIENT_ERROR_UNSUPPORTED_FEATURE(feature) \
globus_error_construct_error(\
GLOBUS_FTP_CLIENT_MODULE,\
GLOBUS_NULL,\
GLOBUS_FTP_CLIENT_ERROR_FEATURE, \
__FILE__, \
_globus_func_name, \
__LINE__, \
"the server doesn't support the %s feature",\
feature)
#define GLOBUS_I_FTP_CLIENT_NO_RESTART_MARKER() \
globus_error_construct_error( \
GLOBUS_FTP_CLIENT_MODULE, \
GLOBUS_NULL, \
GLOBUS_FTP_CLIENT_ERROR_NO_RESTART_MARKER, \
__FILE__, \
_globus_func_name, \
__LINE__, \
"Could not find restart info\n")
#endif
#ifdef __cplusplus
}
#endif
#endif /* GLOBUS_I_FTP_CLIENT_H */
globus_i_ftp_client_handle_t::stalled_blocks
globus_priority_q_t stalled_blocks
Definition: globus_i_ftp_client.h:563
globus_i_ftp_client_handleattr_t::rfc1738_url
globus_bool_t rfc1738_url
Definition: globus_i_ftp_client.h:208
globus_i_ftp_client_target_s::url_string
char * url_string
Definition: globus_i_ftp_client.h:690
globus_ftp_client_plugin_complete_t
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_i_ftp_client_restart_s
Restart information management.
Definition: globus_i_ftp_client.h:773
globus_ftp_client_plugin_command_t
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
globus_ftp_client_plugin_recursive_list_t
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_ftp_client_plugin_connect_t
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
globus_i_ftp_client_handle_t::state
globus_ftp_client_handle_state_t state
Definition: globus_i_ftp_client.h:557
globus_ftp_client_plugin_chmod_t
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
globus_i_ftp_client_plugin_t::plugin
globus_ftp_client_plugin_t * plugin
Definition: globus_i_ftp_client.h:816
globus_ftp_client_plugin_get_t
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
globus_ftp_client_complete_callback_t
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_plugin_machine_list_t
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_i_ftp_client_range_t::offset
globus_off_t offset
Definition: globus_i_ftp_client.h:180
globus_ftp_client_plugin_copy_t
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
globus_ftp_client_plugin_verbose_list_t
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
globus_i_ftp_client_handle_t
FTP Client handle implementation.
Definition: globus_i_ftp_client.h:522
globus_ftp_client_plugin_list_t
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
globus_i_ftp_client_target_s::owner
globus_i_ftp_client_handle_t * owner
Definition: globus_i_ftp_client.h:717
globus_i_ftp_client_target_s::features
globus_i_ftp_client_features_t * features
Definition: globus_i_ftp_client.h:697
globus_ftp_client_plugin_mkdir_t
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_i_ftp_client_handleattr_t
Handle attributes.
Definition: globus_i_ftp_client.h:193
globus_i_ftp_client_handle_t::checksum
char * checksum
Definition: globus_i_ftp_client.h:649
globus_i_ftp_client_features_s
FTP server features we are interested in.
Definition: globus_i_ftp_client.h:436
globus_i_ftp_client_plugin_t::plugin_specific
void * plugin_specific
Definition: globus_i_ftp_client.h:873
globus_i_ftp_client_handleattr_t::gridftp2
globus_bool_t gridftp2
Definition: globus_i_ftp_client.h:214
globus_i_ftp_client_target_s::attr
globus_i_ftp_client_operationattr_t * attr
Definition: globus_i_ftp_client.h:714
globus_i_ftp_client_cache_entry_t::target
globus_i_ftp_client_target_t * target
Definition: globus_i_ftp_client.h:766
globus_i_ftp_client_handle_t::mlst_buffer_pointer
globus_byte_t ** mlst_buffer_pointer
Definition: globus_i_ftp_client.h:633
globus_i_ftp_client_target_s::mask
globus_ftp_client_plugin_command_mask_t mask
Definition: globus_i_ftp_client.h:723
globus_ftp_client_plugin_cksm_t
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
globus_ftp_client_plugin_mlst_t
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
globus_i_ftp_client_handle_t::num_active_blocks
int num_active_blocks
Definition: globus_i_ftp_client.h:574
globus_ftp_client_plugin_rmdir_t
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
globus_i_ftp_client_handle_t::features_pointer
globus_i_ftp_client_features_t * features_pointer
Definition: globus_i_ftp_client.h:630
globus_i_ftp_client_cache_entry_t::url
globus_url_t url
Definition: globus_i_ftp_client.h:761
globus_ftp_client_tristate_t
globus_ftp_client_tristate_t
Definition: globus_ftp_client.h:1216
globus_ftp_client_plugin_chgrp_t
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
globus_ftp_client_probed_feature_t
globus_ftp_client_probed_feature_t
Definition: globus_ftp_client.h:1228
globus_i_ftp_client_target_s::control_handle
globus_ftp_control_handle_t * control_handle
Definition: globus_i_ftp_client.h:688
globus_i_ftp_client_handle_t::mutex
globus_mutex_t mutex
Definition: globus_i_ftp_client.h:646
globus_i_ftp_client_handle_t::handle
globus_ftp_client_handle_t * handle
Definition: globus_i_ftp_client.h:528
globus_i_ftp_client_handle_t::modification_time_pointer
globus_abstime_t * modification_time_pointer
Definition: globus_i_ftp_client.h:624
globus_i_ftp_client_data_target_t::dest
struct globus_i_ftp_client_target_s * dest
Definition: globus_i_ftp_client.h:502
globus_i_ftp_client_handle_t::read_all_biggest_offset
globus_off_t read_all_biggest_offset
Definition: globus_i_ftp_client.h:621
globus_i_ftp_client_data_target_t
Data connection caching information.
Definition: globus_i_ftp_client.h:491
globus_i_ftp_client_range_t
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_i_ftp_client_handleattr_t::cache_all
globus_bool_t cache_all
Definition: globus_i_ftp_client.h:202
globus_ftp_client_plugin_put_t
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
globus_ftp_client_plugin_authenticate_t
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
globus_i_ftp_client_handle_t::src_op_queue
globus_fifo_t src_op_queue
Definition: globus_i_ftp_client.h:657
globus_i_ftp_client_handle_t::checksum_offset
globus_off_t checksum_offset
Definition: globus_i_ftp_client.h:652
globus_i_ftp_client_operationattr_t
The globus_i_ftp_client_operationattr_t is a pointer to this structure type.
Definition: globus_i_ftp_client.h:131
globus_ftp_client_plugin_delete_t
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
globus_i_ftp_client_target_s::state
globus_ftp_client_target_state_t state
Definition: globus_i_ftp_client.h:685
globus_ftp_client_plugin_stat_t
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
globus_ftp_client_plugin_command_mask_t
globus_ftp_client_plugin_command_mask_t
Definition: globus_ftp_client_plugin.h:71
globus_ftp_client_plugin_read_t
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_i_ftp_client_handle_t::source_url
char * source_url
Definition: globus_i_ftp_client.h:537
globus_i_ftp_client_handle_t::active_blocks
globus_hashtable_t active_blocks
Definition: globus_i_ftp_client.h:569
globus_ftp_client_plugin_fault_t
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
globus_ftp_client_plugin_third_party_transfer_t
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
globus_i_ftp_client_range_t::end_offset
globus_off_t end_offset
Definition: globus_i_ftp_client.h:185
globus_i_ftp_client_target_s
FTP Connection State.
Definition: globus_i_ftp_client.h:682
globus_i_ftp_client_handle_t::base_offset
globus_off_t base_offset
Definition: globus_i_ftp_client.h:617
globus_i_ftp_client_target_s::cached_data_conn
globus_i_ftp_client_data_target_t cached_data_conn
Definition: globus_i_ftp_client.h:720
globus_ftp_client_plugin_abort_t
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
globus_i_ftp_client_handle_t::restart_marker
globus_ftp_client_restart_marker_t restart_marker
Definition: globus_i_ftp_client.h:605
globus_i_ftp_client_handle_t::notify_in_progress
int notify_in_progress
Definition: globus_i_ftp_client.h:597
globus_i_ftp_client_handle_t::dest_url
char * dest_url
Definition: globus_i_ftp_client.h:545
globus_i_ftp_client_handle_t::partial_offset
globus_off_t partial_offset
Definition: globus_i_ftp_client.h:608
globus_i_ftp_client_target_s::dcau
globus_ftp_control_dcau_t dcau
Definition: globus_i_ftp_client.h:699
globus_ftp_client_plugin_symlink_t
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_i_ftp_client_plugin_t::copy_func
globus_ftp_client_plugin_copy_t copy_func
Definition: globus_i_ftp_client.h:821
globus_i_ftp_client_handle_t
struct globus_i_ftp_client_handle_t globus_i_ftp_client_handle_t
FTP Client handle implementation.
globus_i_ftp_client_data_target_t::operation
globus_i_ftp_client_operation_t operation
Definition: globus_i_ftp_client.h:506
globus_ftp_client.h
GridFTP Client.
globus_ftp_client_plugin_modification_time_t
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_handle_t::chmod_file_mode
int chmod_file_mode
Definition: globus_i_ftp_client.h:637
globus_ftp_client_plugin_write_t
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
globus_i_ftp_client_handle_t::callback
globus_ftp_client_complete_callback_t callback
Definition: globus_i_ftp_client.h:552
globus_i_ftp_client_handle_t::source_size
globus_off_t source_size
Definition: globus_i_ftp_client.h:602
globus_i_ftp_client_handle_t::pasv_address
globus_ftp_control_host_port_t * pasv_address
Definition: globus_i_ftp_client.h:579
globus_i_ftp_client_handle_t::err
globus_object_t * err
Definition: globus_i_ftp_client.h:587
globus_i_ftp_client_handle_t::callback_arg
void * callback_arg
Definition: globus_i_ftp_client.h:554
globus_ftp_client_plugin.h
Plugin Implementation.
globus_i_ftp_client_target_s::url
globus_url_t url
Definition: globus_i_ftp_client.h:692
globus_i_ftp_client_handle_t::restart_info
struct globus_i_ftp_client_restart_s * restart_info
Definition: globus_i_ftp_client.h:592
globus_ftp_client_data_callback_t
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
globus_ftp_client_plugin_feat_t
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
globus_i_ftp_client_handle_t::user_pointer
void * user_pointer
Definition: globus_i_ftp_client.h:670
globus_i_ftp_client_handle_t::size_pointer
globus_off_t * size_pointer
Definition: globus_i_ftp_client.h:627
globus_i_ftp_client_plugin_t::destroy_func
globus_ftp_client_plugin_destroy_t destroy_func
Definition: globus_i_ftp_client.h:825
globus_i_ftp_client_handle_t::chgrp_group
char * chgrp_group
Definition: globus_i_ftp_client.h:640
globus_i_ftp_client_handle_t::num_pasv_addresses
int num_pasv_addresses
Definition: globus_i_ftp_client.h:584
globus_i_ftp_client_plugin_t::command_mask
globus_ftp_client_plugin_command_mask_t command_mask
Definition: globus_i_ftp_client.h:870
globus_ftp_client_plugin_size_t
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
globus_i_ftp_client_handle_t::source
struct globus_i_ftp_client_target_s * source
Definition: globus_i_ftp_client.h:534
globus_ftp_client_plugin_data_t
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_ftp_client_plugin_utime_t
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_data_target_t::source
struct globus_i_ftp_client_target_s * source
Definition: globus_i_ftp_client.h:497
globus_ftp_client_plugin_response_t
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_i_ftp_client_plugin_t
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...
globus_i_ftp_client_plugin_t
FTP Client Plugin.Each plugin implementation should define a method for initializing one of these str...
Definition: globus_i_ftp_client.h:798
globus_i_ftp_client_plugin_t::plugin_name
char * plugin_name
Definition: globus_i_ftp_client.h:810
globus_ftp_client_restart_marker_t
Restart marker.This structure is may be either a stream mode transfer offset, or an extended block mo...
Definition: globus_ftp_client.h:224
globus_i_ftp_client_handle_t::dest
struct globus_i_ftp_client_target_s * dest
Definition: globus_i_ftp_client.h:543
globus_i_ftp_client_handle_t::partial_end_offset
globus_off_t partial_end_offset
Definition: globus_i_ftp_client.h:611
globus_i_ftp_client_target_s::auth_info
globus_ftp_control_auth_info_t auth_info
Definition: globus_i_ftp_client.h:694
globus_i_ftp_client_handleattr_t
struct globus_i_ftp_client_handleattr_t globus_i_ftp_client_handleattr_t
Handle attributes.
globus_i_ftp_client_handleattr_t::url_cache
globus_list_t * url_cache
Definition: globus_i_ftp_client.h:223
globus_i_ftp_client_handleattr_t::plugins
globus_list_t * plugins
Definition: globus_i_ftp_client.h:231
globus_i_ftp_client_cache_entry_t
URL caching support structure.
Definition: globus_i_ftp_client.h:758
globus_i_ftp_client_handle_t::op
globus_i_ftp_client_operation_t op
Definition: globus_i_ftp_client.h:549
globus_ftp_client_plugin_move_t
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_ftp_client_plugin_destroy_t
void(* globus_ftp_client_plugin_destroy_t)(globus_ftp_client_plugin_t *plugin, void *plugin_specific)
Definition: globus_ftp_client_plugin.h:148