.TH "globus_ftp_control.h" 3 "Tue Jul 5 2022" "Version 9.10" "globus_ftp_control" \" -*- nroff -*-
.ad l
.nh
.SH NAME
globus_ftp_control.h \- GridFTP Control Connection API\&.  

.SH SYNOPSIS
.br
.PP
\fC#include 'globus_common\&.h'\fP
.br
\fC#include 'globus_error_string\&.h'\fP
.br
\fC#include 'globus_io\&.h'\fP
.br
\fC#include 'globus_gss_assist\&.h'\fP
.br
\fC#include 'globus_handle_table\&.h'\fP
.br

.SS "Data Structures"

.in +1c
.ti -1c
.RI "struct \fBglobus_ftp_control_dcau_subject_s\fP"
.br
.RI "Control DCAU subject authentication type\&. "
.ti -1c
.RI "struct \fBglobus_ftp_control_round_robin_s\fP"
.br
.RI "Control striping round robin attribute structure\&. "
.ti -1c
.RI "union \fBglobus_ftp_control_dcau_u\fP"
.br
.RI "Control DCAU union\&. "
.ti -1c
.RI "union \fBglobus_ftp_control_layout_u\fP"
.br
.RI "Control striping attribute union\&. "
.ti -1c
.RI "union \fBglobus_ftp_control_parallelism_u\fP"
.br
.RI "Control parallelism attribute structure 
.br
 "
.ti -1c
.RI "struct \fBglobus_ftp_control_tcpbuffer_default_t\fP"
.br
.RI "Don't change the TCP buffer/window size from the system default\&. "
.ti -1c
.RI "struct \fBglobus_ftp_control_tcpbuffer_fixed_t\fP"
.br
.RI "Set the TCP buffer/window size to a fixed value\&. "
.ti -1c
.RI "struct \fBglobus_ftp_control_tcpbuffer_automatic_s\fP"
.br
.RI "Automatically set the TCP buffer/window size\&. "
.ti -1c
.RI "union \fBglobus_ftp_control_tcpbuffer_t\fP"
.br
.RI "Control tcpbuffer attribute structure\&. "
.ti -1c
.RI "struct \fBglobus_ftp_control_auth_info_s\fP"
.br
.RI "Authentication Values\&. "
.in -1c
.SS "Macros"

.in +1c
.ti -1c
.RI "#define \fBGLOBUS_FTP_CONTROL_MODULE\fP   (&globus_i_ftp_control_module)"
.br
.RI "Module descriptor\&. "
.in -1c
.SS "Typedefs"

.in +1c
.ti -1c
.RI "typedef enum \fBglobus_ftp_control_type_e\fP \fBglobus_ftp_control_type_t\fP"
.br
.RI "GridFTP TYPE values\&. "
.ti -1c
.RI "typedef enum \fBglobus_ftp_control_mode_e\fP \fBglobus_ftp_control_mode_t\fP"
.br
.RI "GridFTP MODE values\&. "
.ti -1c
.RI "typedef enum \fBglobus_ftp_control_dcau_mode_e\fP \fBglobus_ftp_control_dcau_mode_t\fP"
.br
.RI "GridFTP DCAU values\&. "
.ti -1c
.RI "typedef struct \fBglobus_ftp_control_dcau_subject_s\fP \fBglobus_ftp_control_dcau_subject_t\fP"
.br
.RI "Control DCAU subject authentication type\&. "
.ti -1c
.RI "typedef enum \fBglobus_ftp_control_striping_mode_e\fP \fBglobus_ftp_control_striping_mode_t\fP"
.br
.RI "GridFTP Striping Types\&. "
.ti -1c
.RI "typedef struct \fBglobus_ftp_control_round_robin_s\fP \fBglobus_ftp_control_round_robin_t\fP"
.br
.RI "Control striping round robin attribute structure\&. "
.ti -1c
.RI "typedef union \fBglobus_ftp_control_dcau_u\fP \fBglobus_ftp_control_dcau_t\fP"
.br
.RI "Control DCAU union\&. "
.ti -1c
.RI "typedef union \fBglobus_ftp_control_layout_u\fP \fBglobus_ftp_control_layout_t\fP"
.br
.RI "Control striping attribute union\&. "
.ti -1c
.RI "typedef enum \fBglobus_ftp_control_structure_e\fP \fBglobus_ftp_control_structure_t\fP"
.br
.ti -1c
.RI "typedef enum \fBglobus_ftp_control_parallelism_mode_e\fP \fBglobus_ftp_control_parallelism_mode_t\fP"
.br
.ti -1c
.RI "typedef union \fBglobus_ftp_control_parallelism_u\fP \fBglobus_ftp_control_parallelism_t\fP"
.br
.RI "Control parallelism attribute structure 
.br
 "
.ti -1c
.RI "typedef enum \fBglobus_ftp_control_tcpbuffer_mode_e\fP \fBglobus_ftp_control_tcpbuffer_mode_t\fP"
.br
.ti -1c
.RI "typedef struct \fBglobus_ftp_control_tcpbuffer_automatic_s\fP \fBglobus_ftp_control_tcpbuffer_automatic_t\fP"
.br
.RI "Automatically set the TCP buffer/window size\&. "
.ti -1c
.RI "typedef union \fBglobus_ftp_control_tcpbuffer_t\fP \fBglobus_ftp_control_tcpbuffer_t\fP"
.br
.RI "Control tcpbuffer attribute structure\&. "
.ti -1c
.RI "typedef struct \fBglobus_ftp_control_auth_info_s\fP \fBglobus_ftp_control_auth_info_t\fP"
.br
.RI "Authentication Values\&. "
.ti -1c
.RI "typedef void(* \fBglobus_ftp_control_response_callback_t\fP) (void *callback_arg, struct globus_ftp_control_handle_s *handle, globus_object_t *error, globus_ftp_control_response_t *ftp_response)"
.br
.ti -1c
.RI "typedef void(* \fBglobus_ftp_control_callback_t\fP) (void *callback_arg, struct globus_ftp_control_handle_s *handle, globus_object_t *error)"
.br
.ti -1c
.RI "typedef void(* \fBglobus_ftp_control_command_callback_t\fP) (void *callback_arg, struct globus_ftp_control_handle_s *handle, globus_object_t *error, union globus_ftp_control_command_u *command)"
.br
.ti -1c
.RI "typedef void(* \fBglobus_ftp_control_auth_callback_t\fP) (void *callback_arg, struct globus_ftp_control_handle_s *handle, globus_object_t *error, \fBglobus_ftp_control_auth_info_t\fP *auth_result)"
.br
.ti -1c
.RI "typedef unsigned long \fBglobus_ftp_control_auth_requirements_t\fP"
.br
.ti -1c
.RI "typedef void(* \fBglobus_ftp_control_data_callback_t\fP) (void *callback_arg, globus_ftp_control_handle_t *handle, globus_object_t *error, globus_byte_t *buffer, globus_size_t length, globus_off_t offset, globus_bool_t eof)"
.br
.ti -1c
.RI "typedef void(* \fBglobus_ftp_control_server_callback_t\fP) (void *callback_arg, struct globus_ftp_control_server_s *server_handle, globus_object_t *error)"
.br
.RI "Server callback\&. "
.in -1c
.SS "Enumerations"

.in +1c
.ti -1c
.RI "enum \fBglobus_ftp_control_type_e\fP { \fBGLOBUS_FTP_CONTROL_TYPE_NONE\fP, \fBGLOBUS_FTP_CONTROL_TYPE_ASCII\fP = 'A', \fBGLOBUS_FTP_CONTROL_TYPE_EBCDIC\fP = 'E', \fBGLOBUS_FTP_CONTROL_TYPE_IMAGE\fP = 'I', \fBGLOBUS_FTP_CONTROL_TYPE_LOCAL\fP = 'L' }"
.br
.RI "GridFTP TYPE values\&. "
.ti -1c
.RI "enum \fBglobus_ftp_control_mode_e\fP { \fBGLOBUS_FTP_CONTROL_MODE_NONE\fP, \fBGLOBUS_FTP_CONTROL_MODE_STREAM\fP = 'S', \fBGLOBUS_FTP_CONTROL_MODE_BLOCK\fP = 'B', \fBGLOBUS_FTP_CONTROL_MODE_EXTENDED_BLOCK\fP = 'E', \fBGLOBUS_FTP_CONTROL_MODE_COMPRESSED\fP = 'C' }"
.br
.RI "GridFTP MODE values\&. "
.ti -1c
.RI "enum \fBglobus_ftp_control_dcau_mode_e\fP { \fBGLOBUS_FTP_CONTROL_DCAU_NONE\fP = 'N', \fBGLOBUS_FTP_CONTROL_DCAU_SELF\fP = 'A', \fBGLOBUS_FTP_CONTROL_DCAU_SUBJECT\fP = 'S', \fBGLOBUS_FTP_CONTROL_DCAU_DEFAULT\fP }"
.br
.RI "GridFTP DCAU values\&. "
.ti -1c
.RI "enum \fBglobus_ftp_control_striping_mode_e\fP "
.br
.RI "GridFTP Striping Types\&. "
.ti -1c
.RI "enum \fBglobus_ftp_control_protection_t\fP { \fBGLOBUS_FTP_CONTROL_PROTECTION_CLEAR\fP = 'C', \fBGLOBUS_FTP_CONTROL_PROTECTION_SAFE\fP = 'S', \fBGLOBUS_FTP_CONTROL_PROTECTION_CONFIDENTIAL\fP = 'E', \fBGLOBUS_FTP_CONTROL_PROTECTION_PRIVATE\fP = 'P' }"
.br
.RI "GridFTP Protection Types\&. "
.ti -1c
.RI "enum \fBglobus_ftp_control_delay_passive_t\fP "
.br
.ti -1c
.RI "enum \fBglobus_ftp_control_structure_e\fP "
.br
.ti -1c
.RI "enum \fBglobus_ftp_control_parallelism_mode_e\fP "
.br
.ti -1c
.RI "enum \fBglobus_ftp_control_tcpbuffer_mode_e\fP { \fBGLOBUS_FTP_CONTROL_TCPBUFFER_DEFAULT\fP, \fBGLOBUS_FTP_CONTROL_TCPBUFFER_FIXED\fP, \fBGLOBUS_FTP_CONTROL_TCPBUFFER_AUTOMATIC\fP }"
.br
.in -1c
.SS "Functions"

.in +1c
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_local_layout\fP (globus_ftp_control_handle_t *handle, \fBglobus_ftp_control_layout_t\fP *layout, globus_size_t data_size)"
.br
.RI "Set data layout\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_data_set_interface\fP (globus_ftp_control_handle_t *handle, const char *interface_addr)"
.br
.RI "Create an outgoing FTP data connection\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_create_data_info\fP (globus_ftp_control_handle_t *handle, globus_ftp_control_data_write_info_t *data_info, globus_byte_t *buffer, globus_size_t length, globus_off_t offset, globus_bool_t eof, \fBglobus_ftp_control_data_callback_t\fP callback, void *callback_arg)"
.br
.RI "Create a globus_ftp_control_data_write_info_t structure\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_release_data_info\fP (globus_ftp_control_handle_t *handle, globus_ftp_control_data_write_info_t *data_info)"
.br
.RI "Release a data_info structure\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_data_write_stripe\fP (globus_ftp_control_handle_t *handle, globus_byte_t *buffer, globus_size_t length, globus_off_t offset, globus_bool_t eof, int stripe_ndx, \fBglobus_ftp_control_data_callback_t\fP callback, void *callback_arg)"
.br
.RI "Write FTP data to a stripe\&. "
.ti -1c
.RI "globus_result_t \fBglobus_X_ftp_control_data_write_stripe\fP (globus_ftp_control_handle_t *handle, globus_byte_t *buffer, globus_size_t length, globus_off_t offset, globus_bool_t eof, int stripe_ndx, globus_ftp_control_data_write_info_t *data_info)"
.br
.RI "Write data to a stripe from an enqueue callback\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_auth_info_init\fP (\fBglobus_ftp_control_auth_info_t\fP *auth_info, gss_cred_id_t credential_handle, globus_bool_t encrypt, char *user, char *password, char *account, char *subject)"
.br
.RI "Initialize authentication information\&. "
.ti -1c
.RI "int \fBglobus_ftp_control_auth_info_compare\fP (\fBglobus_ftp_control_auth_info_t\fP *auth_info_1, \fBglobus_ftp_control_auth_info_t\fP *auth_info_2)"
.br
.RI "Compare authentication information\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_handle_init\fP (globus_ftp_control_handle_t *handle)"
.br
.RI "Initialize a globus ftp handle\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_handle_destroy\fP (globus_ftp_control_handle_t *handle)"
.br
.RI "Destroy a globus ftp handle\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_server_handle_init\fP (globus_ftp_control_server_t *handle)"
.br
.RI "Initialize a GridFTP server handle\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_server_handle_destroy\fP (globus_ftp_control_server_t *handle)"
.br
.RI "Destroy a GridFTP server handle\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_response_destroy\fP (globus_ftp_control_response_t *response)"
.br
.RI "Free the memory associated with a response\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_response_copy\fP (globus_ftp_control_response_t *src, globus_ftp_control_response_t *dest)"
.br
.RI "Copy a response structure\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_connect\fP (globus_ftp_control_handle_t *handle, char *host, unsigned short port, \fBglobus_ftp_control_response_callback_t\fP callback, void *callback_arg)"
.br
.RI "Create a new control connection to an FTP server\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_authenticate\fP (globus_ftp_control_handle_t *handle, \fBglobus_ftp_control_auth_info_t\fP *auth_info, globus_bool_t use_auth, \fBglobus_ftp_control_response_callback_t\fP callback, void *callback_arg)"
.br
.RI "Authenticate the user to the FTP server\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_authenticate_ex\fP (globus_ftp_control_handle_t *handle, \fBglobus_ftp_control_auth_info_t\fP *auth_info, globus_bool_t use_auth, \fBglobus_ftp_control_response_callback_t\fP callback, void *callback_arg)"
.br
.RI "Authenticate the user to the FTP server\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_abort\fP (globus_ftp_control_handle_t *handle, \fBglobus_ftp_control_response_callback_t\fP callback, void *callback_arg)"
.br
.RI "Send a GridFTP ABORT\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_quit\fP (globus_ftp_control_handle_t *handle, \fBglobus_ftp_control_response_callback_t\fP callback, void *callback_arg)"
.br
.RI "Send a GridFTP QUIT\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_force_close\fP (globus_ftp_control_handle_t *handle, \fBglobus_ftp_control_response_callback_t\fP callback, void *callback_arg)"
.br
.RI "Force a control connection to close\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_send_command\fP (globus_ftp_control_handle_t *handle, const char *cmdspec, \fBglobus_ftp_control_response_callback_t\fP callback, void *callback_arg,\&.\&.\&.)"
.br
.RI "Send an FTP protocol command\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_local_pbsz\fP (globus_ftp_control_handle_t *handle, unsigned long bufsize)"
.br
.RI "Set data channel protection buffer size\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_get_pbsz\fP (globus_ftp_control_handle_t *handle, unsigned long *bufsize)"
.br
.RI "Get data channel protection buffer size\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_server_listen\fP (globus_ftp_control_server_t *handle, unsigned short *port, \fBglobus_ftp_control_server_callback_t\fP callback, void *callback_arg)"
.br
.RI "Listen on for FTP Client Connections\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_server_listen_ex\fP (globus_ftp_control_server_t *handle, globus_io_attr_t *attr, unsigned short *port, \fBglobus_ftp_control_server_callback_t\fP callback, void *callback_arg)"
.br
.RI "Listen on for FTP Client Connections\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_server_stop\fP (globus_ftp_control_server_t *listener, \fBglobus_ftp_control_server_callback_t\fP callback, void *callback_arg)"
.br
.RI "Stop listening for GridFTP client connections\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_server_accept\fP (globus_ftp_control_server_t *listener, globus_ftp_control_handle_t *handle, \fBglobus_ftp_control_callback_t\fP callback, void *callback_arg)"
.br
.RI "Accept a Client Connection\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_server_authenticate\fP (globus_ftp_control_handle_t *handle, \fBglobus_ftp_control_auth_requirements_t\fP auth_requirements, \fBglobus_ftp_control_auth_callback_t\fP callback, void *callback_arg)"
.br
.RI "Authenticate a GridFTP Client Connection\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_read_commands\fP (globus_ftp_control_handle_t *handle, \fBglobus_ftp_control_command_callback_t\fP callback, void *callback_arg)"
.br
.RI "Read GridFTP commands\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_send_response\fP (globus_ftp_control_handle_t *handle, const char *respspec, \fBglobus_ftp_control_callback_t\fP callback, void *callback_arg,\&.\&.\&.)"
.br
.RI "Send a GridFTP response\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_command_copy\fP (globus_ftp_control_command_t *dest, globus_ftp_control_command_t *src)"
.br
.RI "Copy of GridFTP command\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_command_init\fP (globus_ftp_control_command_t *command, char *raw_command, \fBglobus_ftp_control_auth_info_t\fP *auth_info)"
.br
.RI "Initialize a GridFTP command\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_command_destroy\fP (globus_ftp_control_command_t *command)"
.br
.RI "Destroy a GridFTP command\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_data_force_close\fP (globus_ftp_control_handle_t *control_handle, \fBglobus_ftp_control_callback_t\fP destroy_callback, void *destroy_callback_arg)"
.br
.RI "Close data connections\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_local_send_eof\fP (globus_ftp_control_handle_t *handle, globus_bool_t send_eof)"
.br
.RI "Enable or disable automatic EOF handling\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_data_send_eof\fP (globus_ftp_control_handle_t *handle, int count[], int array_size, globus_bool_t eof_message, \fBglobus_ftp_control_callback_t\fP cb, void *user_arg)"
.br
.RI "Send EOF\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_data_connect_read\fP (globus_ftp_control_handle_t *handle, globus_ftp_control_data_connect_callback_t callback, void *user_arg)"
.br
.RI "Create an incoming FTP data connection\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_data_connect_write\fP (globus_ftp_control_handle_t *handle, globus_ftp_control_data_connect_callback_t callback, void *user_arg)"
.br
.RI "Create an outgoing FTP data connection\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_data_add_channels\fP (globus_ftp_control_handle_t *handle, unsigned int num_channels, unsigned int stripe)"
.br
.RI "Add data channels\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_data_remove_channels\fP (globus_ftp_control_handle_t *handle, unsigned int num_channels, unsigned int stripe)"
.br
.RI "Remove Data Channels\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_data_query_channels\fP (globus_ftp_control_handle_t *handle, unsigned int *num_channels, unsigned int stripe)"
.br
.RI "Number of data channels\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_data_get_total_data_channels\fP (globus_ftp_control_handle_t *handle, unsigned int *num_channels, unsigned int stripe_ndx)"
.br
.RI "Get Total Data Channels For a Stripe\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_local_parallelism\fP (globus_ftp_control_handle_t *handle, \fBglobus_ftp_control_parallelism_t\fP *parallelism)"
.br
.RI "Set control handle parallelism\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_local_pasv\fP (globus_ftp_control_handle_t *handle, globus_ftp_control_host_port_t *address)"
.br
.RI "Create a passive socket\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_local_spas\fP (globus_ftp_control_handle_t *handle, globus_ftp_control_host_port_t addresses[], unsigned int num_addresses)"
.br
.RI "Create multiple passive sockets\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_local_port\fP (globus_ftp_control_handle_t *handle, globus_ftp_control_host_port_t *address)"
.br
.RI "Set remote data address\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_local_spor\fP (globus_ftp_control_handle_t *handle, globus_ftp_control_host_port_t addresses[], unsigned int num_addresses)"
.br
.RI "Set remote data addresses\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_local_type\fP (globus_ftp_control_handle_t *handle, \fBglobus_ftp_control_type_t\fP type, int form_code)"
.br
.RI "Set control handle TYPE value\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_local_tcp_buffer\fP (globus_ftp_control_handle_t *handle, \fBglobus_ftp_control_tcpbuffer_t\fP *tcp_buffer)"
.br
.RI "Set data handle TCP buffer size\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_local_mode\fP (globus_ftp_control_handle_t *handle, \fBglobus_ftp_control_mode_t\fP mode)"
.br
.RI "Set data handle mode\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_local_dcau\fP (globus_ftp_control_handle_t *handle, const \fBglobus_ftp_control_dcau_t\fP *dcau, gss_cred_id_t delegated_credential_handle)"
.br
.RI "Set data channel DCAU\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_local_stru\fP (globus_ftp_control_handle_t *handle, \fBglobus_ftp_control_structure_t\fP structure)"
.br
.RI "Set data channel structure\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_data_write\fP (globus_ftp_control_handle_t *handle, globus_byte_t *buffer, globus_size_t length, globus_off_t offset, globus_bool_t eof, \fBglobus_ftp_control_data_callback_t\fP callback, void *callback_arg)"
.br
.RI "Write data to data connections\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_data_read\fP (globus_ftp_control_handle_t *handle, globus_byte_t *buffer, globus_size_t max_length, \fBglobus_ftp_control_data_callback_t\fP callback, void *callback_arg)"
.br
.RI "Read data from data connections\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_set_force_order\fP (globus_ftp_control_handle_t *handle, globus_bool_t order_data, globus_off_t starting_offset)"
.br
.RI "Set data handle to return read mode E data in order\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_ipv6_allow\fP (globus_ftp_control_handle_t *handle, globus_bool_t allow)"
.br
.RI "Not documented yet\&. "
.ti -1c
.RI "globus_result_t \fBglobus_ftp_control_client_get_connection_info_ex\fP (globus_ftp_control_handle_t *handle, globus_ftp_control_host_port_t *local_info, globus_ftp_control_host_port_t *remote_info)"
.br
.RI "Not documented yet\&. "
.in -1c
.SH "Detailed Description"
.PP 
GridFTP Control Connection API\&. 


.SH "Typedef Documentation"
.PP 
.SS "typedef void(* globus_ftp_control_auth_callback_t) (void *callback_arg, struct globus_ftp_control_handle_s *handle, globus_object_t *error, \fBglobus_ftp_control_auth_info_t\fP *auth_result)"
Server authentication complete callback\&.
.PP
A function with this signature is registered by calling globus_ftp_control_accept()\&. It is called when the authentication protocol has completed\&. Based on the auth_result, the server implementor should determine authorization and then send the appropriate response using \fBglobus_ftp_control_send_response()\fP, indicating to the client whether authorization was successful or not\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP This structure is populated when the callback is called and represents a control connection to the client\&. 
.br
\fIerror\fP Indicates if a command was successfully read or or if a failure occurred\&. This object will be freed once this callback returns\&. If the user wishes to have a copy of the error that persists past the life of this callback, they must make a copy using globus_object_copy(), and free it with globus_object_free()\&. 
.br
\fIauth_result\fP A globus_ftp_control_auth_result_t containing the values the client sent for gss authentication, user name, password and account\&. If any of the values were not sent by the client they will be NULL\&. Based on that information the user can decide if the client will be authorized for use of the server\&. 
.br
 
.br
\fIcallback_arg\fP The user argument passed to the callback\&. 
.RE
.PP

.SS "typedef struct \fBglobus_ftp_control_auth_info_s\fP \fBglobus_ftp_control_auth_info_t\fP"

.PP
Authentication Values\&. This structure is populated and passed back to the user via the \fBglobus_ftp_control_auth_callback_t()\fP\&. It contains the information needed to decide if a client may use the server\&. 
.SS "typedef unsigned long \fBglobus_ftp_control_auth_requirements_t\fP"
Authentication requirements\&.
.PP
The value of this should be a bitwise or of
.IP "\(bu" 2
GLOBUS_FTP_CONTROL_AUTH_NONE
.IP "\(bu" 2
GLOBUS_FTP_CONTROL_AUTH_GSSAPI
.IP "\(bu" 2
GLOBUS_FTP_CONTROL_AUTH_USER
.IP "\(bu" 2
GLOBUS_FTP_CONTROL_AUTH_PASS
.IP "\(bu" 2
GLOBUS_FTP_CONTROL_AUTH_ACCT 
.PP

.SS "typedef void(* globus_ftp_control_callback_t) (void *callback_arg, struct globus_ftp_control_handle_s *handle, globus_object_t *error)"
Asynchronous control callback\&.
.PP
This callback is used as a generic control operation callback\&.
.PP
\fBParameters\fP
.RS 4
\fIcallback_arg\fP User supplied argument to the callback function 
.br
\fIhandle\fP A pointer to the GridFTP control handle\&. Used to identify which control connection the operation was applied to\&. 
.br
\fIerror\fP Pointer to a globus error object containing information about any errors that occurred processing the operation 
.RE
.PP

.SS "typedef void(* globus_ftp_control_command_callback_t) (void *callback_arg, struct globus_ftp_control_handle_s *handle, globus_object_t *error, union globus_ftp_control_command_u *command)"
Server command callback\&.
.PP
When a command from a client is received on the control channel a user callback with this signature is called\&.
.PP
\fBParameters\fP
.RS 4
\fIcallback_arg\fP The user argument passed to the callback function\&. 
.br
\fIhandle\fP The control handle that the command was issued on\&. 
.br
\fIerror\fP Indicates if a command was successfully read or or if a failure occurred\&. This object will be freed once this callback returns\&. If the user wishes to have a copy of the error that persists past the life of this callback, they must make a copy using globus_object_copy(), and free it with globus_object_free()\&. 
.br
\fIcommand\fP The command structure indicates what type of command the client issued\&. Based on the 'type' further information can be extracted\&. This command structure will be freed once this callback returns\&. If the user wishes to have a copy of the error that persists past the life of this callback, they must make a copy using \fBglobus_ftp_control_command_copy()\fP, and free it with globus_ftp_control_command_free()\&. 
.RE
.PP

.SS "typedef void(* globus_ftp_control_data_callback_t) (void *callback_arg, globus_ftp_control_handle_t *handle, globus_object_t *error, globus_byte_t *buffer, globus_size_t length, globus_off_t offset, globus_bool_t eof)"
Asynchronous data transmission operation callback\&.
.PP
This callback is called in functions that send or receive data on the data channel(s)\&.
.PP
In the case of a write, this function is invoked when the entire data buffer is sent\&. Depending on the data transfer properties set by the globus_ftp_control_local_*() functions, the data may actually be split into multiple buffers and sent to multiple data nodes\&.
.PP
In the case of a read, this function will return a single extent of the data\&. The order of the data returned is not defined in an extended block mode data transfer, unless the ordered_data flag is set\&. It is up to the user of the API to re-construct the file order\&.
.PP
\fBParameters\fP
.RS 4
\fIcallback_arg\fP User supplied argument to the callback function 
.br
\fIhandle\fP A pointer to the GridFTP control handle\&. Used to identify which control connection the operation was applied to\&. 
.br
\fIerror\fP Pointer to a globus error object containing information about any errors that occurred processing the operation 
.br
\fIbuffer\fP The user buffer passed as a parameter to \fBglobus_ftp_control_data_read()\fP or \fBglobus_ftp_control_data_write()\fP\&. 
.br
\fIlength\fP The amount of data in the buffer\&. In the case of an incoming data channel, this may be less than the buffer size\&. 
.br
\fIoffset\fP The file offset of the data which is contained in the buffer\&. 
.br
\fIeof\fP This is set to GLOBUS_TRUE then all of the data associated with the transfer has arrived on the data connections associated with this handle\&. If multiple data callbacks are registered with this handle, there is no guaranteed order of the EOF callback with respect to other data callbacks\&. If multiple callbacks are registered when EOF is reached on the data connections, at least one callback function will be called with eof set to GLOBUS_TRUE\&. 
.RE
.PP

.SS "typedef enum \fBglobus_ftp_control_parallelism_mode_e\fP \fBglobus_ftp_control_parallelism_mode_t\fP"
control parallelism Types 
.SS "typedef void(* globus_ftp_control_response_callback_t) (void *callback_arg, struct globus_ftp_control_handle_s *handle, globus_object_t *error, globus_ftp_control_response_t *ftp_response)"
Asynchronous operation completion callback\&.
.PP
This callback is called whenever a reply to command is received on the FTP control channel\&. It allows the user to handle the received reply or alternatively handle any errors that occurred during the interaction with the FTP server\&. This function will be called multiple times in the case when intermediate responses (1yz) are received\&.
.PP
\fBParameters\fP
.RS 4
\fIcallback_arg\fP User supplied argument to the callback function 
.br
\fIhandle\fP A pointer to the GridFTP control handle\&. Used to identify which control connection the operation was applied to\&. 
.br
\fIerror\fP Pointer to a globus error object containing information about any errors that occurred processing the operation 
.br
\fIftp_response\fP Pointer to a response structure containing the FTP response to the command\&. 
.RE
.PP

.SS "typedef enum \fBglobus_ftp_control_structure_e\fP \fBglobus_ftp_control_structure_t\fP"
control structure structure 
.SS "typedef enum \fBglobus_ftp_control_tcpbuffer_mode_e\fP \fBglobus_ftp_control_tcpbuffer_mode_t\fP"
TCP Buffer Setting Modes 
.SH "Enumeration Type Documentation"
.PP 
.SS "enum \fBglobus_ftp_control_delay_passive_t\fP"
delayed passive flags 
.SS "enum \fBglobus_ftp_control_parallelism_mode_e\fP"
control parallelism Types 
.SS "enum \fBglobus_ftp_control_structure_e\fP"
control structure structure 
.SS "enum \fBglobus_ftp_control_tcpbuffer_mode_e\fP"
TCP Buffer Setting Modes 
.PP
\fBEnumerator\fP
.in +1c
.TP
\fB\fIGLOBUS_FTP_CONTROL_TCPBUFFER_DEFAULT \fP\fP
Don't change the TCP buffer/window size from the system default 
.TP
\fB\fIGLOBUS_FTP_CONTROL_TCPBUFFER_FIXED \fP\fP
Set the TCP buffer/window size to a fixed value 
.TP
\fB\fIGLOBUS_FTP_CONTROL_TCPBUFFER_AUTOMATIC \fP\fP
Automatically set the TCP buffer/window size 
.SH "Author"
.PP 
Generated automatically by Doxygen for globus_ftp_control from the source code\&.