.TH "globus_ftp_control.h" 3 "Mon Apr 30 2012" "Version 4.4" "globus ftp control" \" -*- nroff -*- .ad l .nh .SH NAME globus_ftp_control.h \- .SH SYNOPSIS .br .PP .SS "Data Structures" .in +1c .ti -1c .RI "struct \fBglobus_ftp_control_dcau_subject_s\fP" .br .RI "\fIcontrol dcau subject authentication type \fP" .ti -1c .RI "struct \fBglobus_ftp_control_round_robin_s\fP" .br .RI "\fIcontrol striping round robin attribute structure \fP" .ti -1c .RI "union \fBglobus_ftp_control_dcau_u\fP" .br .RI "\fIcontrol dcau union \fP" .ti -1c .RI "union \fBglobus_ftp_control_layout_u\fP" .br .RI "\fIcontrol striping attribute union \fP" .ti -1c .RI "union \fBglobus_ftp_control_parallelism_u\fP" .br .RI "\fIcontrol parallelism attribute structure \fP" .ti -1c .RI "struct \fBglobus_ftp_control_tcpbuffer_default_t\fP" .br .RI "\fIDon't change the TCP buffer/window size from the system default\&. \fP" .ti -1c .RI "struct \fBglobus_ftp_control_tcpbuffer_fixed_t\fP" .br .RI "\fISet the TCP buffer/window size to a fixed value\&. \fP" .ti -1c .RI "struct \fBglobus_ftp_control_tcpbuffer_automatic_s\fP" .br .RI "\fIAutomatically set the TCP buffer/window size\&. \fP" .ti -1c .RI "union \fBglobus_ftp_control_tcpbuffer_t\fP" .br .RI "\fIcontrol tcpbuffer attribute structure \fP" .ti -1c .RI "struct \fBglobus_ftp_control_auth_info_s\fP" .br .RI "\fIAuthentication Values\&. \fP" .in -1c .SS "Defines" .in +1c .ti -1c .RI "#define \fBGLOBUS_FTP_CONTROL_MODULE\fP (&globus_i_ftp_control_module)" .br .in -1c .SS "Typedefs" .in +1c .ti -1c .RI "typedef enum .br \fBglobus_ftp_control_type_e\fP \fBglobus_ftp_control_type_t\fP" .br .ti -1c .RI "typedef enum .br \fBglobus_ftp_control_mode_e\fP \fBglobus_ftp_control_mode_t\fP" .br .ti -1c .RI "typedef enum .br \fBglobus_ftp_control_dcau_mode_e\fP \fBglobus_ftp_control_dcau_mode_t\fP" .br .ti -1c .RI "typedef struct .br \fBglobus_ftp_control_dcau_subject_s\fP \fBglobus_ftp_control_dcau_subject_t\fP" .br .ti -1c .RI "typedef enum .br \fBglobus_ftp_control_striping_mode_e\fP \fBglobus_ftp_control_striping_mode_t\fP" .br .ti -1c .RI "typedef struct .br \fBglobus_ftp_control_round_robin_s\fP \fBglobus_ftp_control_round_robin_t\fP" .br .ti -1c .RI "typedef union .br \fBglobus_ftp_control_dcau_u\fP \fBglobus_ftp_control_dcau_t\fP" .br .ti -1c .RI "typedef union .br \fBglobus_ftp_control_layout_u\fP \fBglobus_ftp_control_layout_t\fP" .br .ti -1c .RI "typedef enum .br \fBglobus_ftp_control_structure_e\fP \fBglobus_ftp_control_structure_t\fP" .br .ti -1c .RI "typedef enum .br \fBglobus_ftp_control_parallelism_mode_e\fP \fBglobus_ftp_control_parallelism_mode_t\fP" .br .ti -1c .RI "typedef union .br \fBglobus_ftp_control_parallelism_u\fP \fBglobus_ftp_control_parallelism_t\fP" .br .ti -1c .RI "typedef enum .br \fBglobus_ftp_control_tcpbuffer_mode_e\fP \fBglobus_ftp_control_tcpbuffer_mode_t\fP" .br .ti -1c .RI "typedef struct .br \fBglobus_ftp_control_tcpbuffer_automatic_s\fP \fBglobus_ftp_control_tcpbuffer_automatic_t\fP" .br .ti -1c .RI "typedef union .br \fBglobus_ftp_control_tcpbuffer_t\fP \fBglobus_ftp_control_tcpbuffer_t\fP" .br .ti -1c .RI "typedef struct .br \fBglobus_ftp_control_auth_info_s\fP \fBglobus_ftp_control_auth_info_t\fP" .br .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 .in -1c .SS "Enumerations" .in +1c .ti -1c .RI "enum \fBglobus_ftp_control_type_e\fP " .br .ti -1c .RI "enum \fBglobus_ftp_control_mode_e\fP " .br .ti -1c .RI "enum \fBglobus_ftp_control_dcau_mode_e\fP " .br .ti -1c .RI "enum \fBglobus_ftp_control_striping_mode_e\fP " .br .ti -1c .RI "enum \fBglobus_ftp_control_protection_t\fP " .br .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 .ti -1c .RI "globus_result_t \fBglobus_ftp_control_data_set_interface\fP (globus_ftp_control_handle_t *handle, const char *interface_addr)" .br .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 .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 .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 .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 .in -1c .SH "Detailed Description" .PP GSIFTP Control Connection API (Data structures and types) .SH "Define Documentation" .PP .SS "#define \fBGLOBUS_FTP_CONTROL_MODULE\fP (&globus_i_ftp_control_module)" .PP Module descriptor\&. The Globus FTP Control library uses the standard module activation and deactivation API to initialize it's state\&. Before any GSIFTP functions are called, the module must be activated .PP .PP .nf globus_module_activate(GLOBUS_GSIFTP_CONTROL_MODULE); .fi .PP .PP This function returns GLOBUS_SUCCESS if the GSIFTP library was successfully initialized\&. This may be called multiple times\&. .PP To deactivate the GSIFTP library, the following must be called .PP .PP .nf globus_module_deactivate(GLOBUS_GSIFTP_CONTROL_MODULE); .fi .PP .SH "Typedef Documentation" .PP .SS "typedef enum \fBglobus_ftp_control_type_e\fP \fBglobus_ftp_control_type_t\fP" .PP control structure types\&. The enumeration values match the character value of the argument to TYPE\&. .SS "typedef enum \fBglobus_ftp_control_mode_e\fP \fBglobus_ftp_control_mode_t\fP" .PP control structure mode .SS "typedef enum \fBglobus_ftp_control_dcau_mode_e\fP \fBglobus_ftp_control_dcau_mode_t\fP" .PP control dcau types .SS "typedef struct \fBglobus_ftp_control_dcau_subject_s\fP \fBglobus_ftp_control_dcau_subject_t\fP" .PP control dcau subject authentication type .SS "typedef enum \fBglobus_ftp_control_striping_mode_e\fP \fBglobus_ftp_control_striping_mode_t\fP" .PP control striping Types .SS "typedef struct \fBglobus_ftp_control_round_robin_s\fP \fBglobus_ftp_control_round_robin_t\fP" .PP control striping round robin attribute structure .SS "typedef union \fBglobus_ftp_control_dcau_u\fP \fBglobus_ftp_control_dcau_t\fP" .PP control dcau union .SS "typedef union \fBglobus_ftp_control_layout_u\fP \fBglobus_ftp_control_layout_t\fP" .PP control striping attribute union .SS "typedef enum \fBglobus_ftp_control_structure_e\fP \fBglobus_ftp_control_structure_t\fP" .PP control structure structure .SS "typedef enum \fBglobus_ftp_control_parallelism_mode_e\fP \fBglobus_ftp_control_parallelism_mode_t\fP" .PP control parallelism Types .SS "typedef union \fBglobus_ftp_control_parallelism_u\fP \fBglobus_ftp_control_parallelism_t\fP" .PP control parallelism attribute structure .SS "typedef enum \fBglobus_ftp_control_tcpbuffer_mode_e\fP \fBglobus_ftp_control_tcpbuffer_mode_t\fP" .PP TCP Buffer Setting Modes\&. .SS "typedef struct \fBglobus_ftp_control_tcpbuffer_automatic_s\fP \fBglobus_ftp_control_tcpbuffer_automatic_t\fP" .PP Automatically set the TCP buffer/window size\&. .SS "typedef union \fBglobus_ftp_control_tcpbuffer_t\fP \fBglobus_ftp_control_tcpbuffer_t\fP" .PP control tcpbuffer attribute structure .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 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)" .PP Asynchronous operation completion callback\&. 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 GSIFTP 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 void(* \fBglobus_ftp_control_callback_t\fP)(void *callback_arg, struct globus_ftp_control_handle_s *handle, globus_object_t *error)" .PP Asynchronous control callback\&. 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 GSIFTP 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(* \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)" .PP Server command callback\&. 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 successful 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(* \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)" .PP Server authentication complete callback\&. A function with this signature is registered by calling globus_ftp_control_accept()\&. It is called when the authentication protocal 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 \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 \fIcallback_arg\fP The user argument passed to the callback\&. .RE .PP .SS "typedef unsigned long \fBglobus_ftp_control_auth_requirements_t\fP" .PP Authentication requirements\&. 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(* \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)" .PP Asynchronous data transmission operation callback\&. 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\&. 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 GSIFTP 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 void(* \fBglobus_ftp_control_server_callback_t\fP)(void *callback_arg, struct globus_ftp_control_server_s *server_handle, globus_object_t *error)" .PP Server callback\&. A functions with this signature can be used as general callbacks for the GSIFTP server API\&. .PP \fBParameters:\fP .RS 4 \fIserver_handle\fP The server handle associated with callback\&. .br \fIresult\fP Indicates if the operation completed successfully or if a failure occurred\&. .br \fIcallback_arg\fP The user argument passed to the callback function\&. .RE .PP .SH "Enumeration Type Documentation" .PP .SS "enum \fBglobus_ftp_control_type_e\fP" .PP control structure types\&. The enumeration values match the character value of the argument to TYPE\&. .SS "enum \fBglobus_ftp_control_mode_e\fP" .PP control structure mode .SS "enum \fBglobus_ftp_control_dcau_mode_e\fP" .PP control dcau types .SS "enum \fBglobus_ftp_control_striping_mode_e\fP" .PP control striping Types .SS "enum \fBglobus_ftp_control_protection_t\fP" .PP control protection levels .SS "enum \fBglobus_ftp_control_delay_passive_t\fP" .PP delayed passive flags .SS "enum \fBglobus_ftp_control_structure_e\fP" .PP control structure structure .SS "enum \fBglobus_ftp_control_parallelism_mode_e\fP" .PP control parallelism Types .SS "enum \fBglobus_ftp_control_tcpbuffer_mode_e\fP" .PP 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 "Function Documentation" .PP .SS "globus_result_t \fBglobus_ftp_control_local_layout\fP (globus_ftp_control_handle_t *handle, \fBglobus_ftp_control_layout_t\fP *layout, globus_size_tdata_size)" .PP Update the handle with the layout and the size of the data sent over the data channel\&. This function is deprecated\&. The interface will be the changed to that of globus_X_ftp_control_local_layout() .PP \fBParameters:\fP .RS 4 \fIhandle\fP A pointer to the FTP control handle into which to insert the layout information\&. .br \fIlayout\fP A variable containing the layout information .br \fIdata_size\fP The size of the data that is going to be sent\&. This may be needed to interpret the layout information\&. .RE .PP .PP References GLOBUS_FTP_CONTROL_MODULE\&. .SS "globus_result_t \fBglobus_ftp_control_data_set_interface\fP (globus_ftp_control_handle_t *handle, const char *interface_addr)" .PP Create an outgoing FTP data connection\&. This function sets the interface that will be used to send and receive information along the data channel\&. .PP \fBParameters:\fP .RS 4 \fIhandle\fP A pointer to a FTP control handle which is configured to create an outgoing data connection\&. .br \fIinterface_addr\fP .RE .PP .PP References GLOBUS_FTP_CONTROL_MODULE\&. .SS "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_tlength, globus_off_toffset, globus_bool_teof, \fBglobus_ftp_control_data_callback_t\fPcallback, void *callback_arg)" .PP Create a globus_ftp_control_data_write_info_t structure\&. This funciton populates a globus_ftp_control_data_callback_t structure with valid information\&. This structure provides the user a way to register several data writes with a single callback\&. This is quite useful to the writter of enqueue functions\&. It allows a single call to \fBglobus_ftp_control_data_write()\fP to be broken up into many writes, potentially on different stripes, and for a single callback to be called when all are finished\&. .PP \fBParameters:\fP .RS 4 \fIhandle\fP A pointer to a FTP control handle\&. The handle contains information about the current state of the control and data connections\&. .br \fIdata_info\fP The globus_ftp_control_data_write_info_t structure to be released\&. .br \fIbuffer\fP The pointer to the user buffer that will be passed to the callback argument when there are zero references to data_info\&. This is intended to be the start of all the data the user intends to write using \fBglobus_ftp_control_data_write_stripe()\fP, but it does not have to be\&. .br \fIlength\fP The length of the memory segment pointed to by the argument buffer\&. .br \fIoffset\fP The file offset of the data segment specified\&. .br \fIeof\fP This should be set to true if the user plans on registering eof on the data_info structure\&. .br \fIcallback\fP The user function to be called when all references to data_info are released\&. This occurs after all data registered for write from globus_ftp_control_data_write_stripe have occured and the user calls \fBglobus_ftp_control_release_data_info()\fP\&. The callback is passed all of the arguments passed to this function with the exception of data_info\&. .br \fIcallback_arg\fP User supplied argument to the callback function .RE .PP .PP References GLOBUS_FTP_CONTROL_MODULE\&. .SS "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)" .PP Release a data_info structure\&. This function releases all memory and references created when a call to \fBglobus_ftp_control_create_data_info()\fP was made\&. For every call to \fBglobus_ftp_control_create_data_info()\fP a call to this function must be made\&. .PP \fBParameters:\fP .RS 4 \fIhandle\fP A pointer to a FTP control handle\&. The handle contains information about the current state of the control and data connections\&. .br \fIdata_info\fP The globus_ftp_control_data_write_info_t structure to be released\&. .RE .PP .PP References GLOBUS_FTP_CONTROL_MODULE\&. .SS "globus_result_t \fBglobus_ftp_control_data_write_stripe\fP (globus_ftp_control_handle_t *handle, globus_byte_t *buffer, globus_size_tlength, globus_off_toffset, globus_bool_teof, intstripe_ndx, \fBglobus_ftp_control_data_callback_t\fPcallback, void *callback_arg)" .PP Write FTP data to a particular stripe\&. This function allows the user to write to a specified stripe\&. The stripe index relates to the order passsed into local_spor()\&. This function differs from \fBglobus_ftp_control_data_write()\fP in that no enqueue function is needed since the user specifies the stripe on which data is written\&. In order to use this function the user must have a valid pointer to a globus_ftp_control_data_write_info_t structure\&. The data_info structure can be obtained by a call to \fBglobus_ftp_control_create_data_info()\fP\&. Many calls to this function can be made, but only a single user callback occurs per creation of a globus_ftp_control_data_write_info_t structure\&. .PP \fBParameters:\fP .RS 4 \fIhandle\fP A pointer to a FTP control handle\&. The handle contains information about the current state of the control and data connections\&. .br \fIbuffer\fP a pointer to the data the user wishes to send along the FTP data channels\&. .br \fIlength\fP the length of the data pointer to by the parameter buffer\&. .br \fIoffset\fP the offset into the file of the data\&. .br \fIeof\fP A boolean stating that this will be the last chuck of data registered on the given stripe\&. In order to properly send an eof message the user must register an eof on every stripe\&. .br \fIstripe_ndx\fP The index of the stripe on which the data will be sent\&. The index of each stripe is determined by the call to local_spas or local_spor\&. .br \fIcallback\fP The function to be called once the data has been sent .br \fIcallback_arg\fP User supplied argument to the callback function .RE .PP .PP References GLOBUS_FTP_CONTROL_MODULE\&. .SS "globus_result_t \fBglobus_X_ftp_control_data_write_stripe\fP (globus_ftp_control_handle_t *handle, globus_byte_t *buffer, globus_size_tlength, globus_off_toffset, globus_bool_teof, intstripe_ndx, globus_ftp_control_data_write_info_t *data_info)" .PP Write data on a specific stripe from an enqueue callback function only\&. This function allows the user to register the write of ftp data on a specfic stripe\&. This function can only be called fromed an enqueue function callback\&. This function should be used only by the implementor of an enqueue funciton\&. It should be viewed as unstable and used used only by advanced users\&. This is the only function in the library that the enqueue function implemtor is allowed from the enqueue callback\&. .PP \fBParameters:\fP .RS 4 \fIhandle\fP A pointer to a FTP control handle\&. The handle contains information about the current state of the control and data connections\&. .br \fIbuffer\fP a pointer to the data the user wishes to send along the FTP data channels\&. .br \fIlength\fP the length of the data pointer to by the parameter buffer\&. .br \fIoffset\fP the offset into the file of the data\&. .br \fIeof\fP a boolean stating that this is the last buffer to be registered\&. When using the _X_ version of this function the user does not need to register an eof on each stripe, the control library will take care of that internally\&. .br \fIstripe_ndx\fP The index of the stripe on which the data will be sent\&. The index of each stripe is determined by the call to local_spas or local_spor\&. .br \fIdata_info\fP An opaque structure that is passed into the enqueue function and contains reference count and state information\&. The same data_info pointer that is passed into the enqueue function must be used for this parameter\&. .RE .PP .PP References GLOBUS_FTP_CONTROL_MODULE\&. .SH "Author" .PP Generated automatically by Doxygen for globus ftp control from the source code\&.