.TH "globus_ftp_control_data" 3 "Tue Jul 5 2022" "Version 9.10" "globus_ftp_control" \" -*- nroff -*-
.ad l
.nh
.SH NAME
globus_ftp_control_data \- GridFTP Data Connections
.PP
 \- Data Connections\&.  

.SH SYNOPSIS
.br
.PP
.SS "Functions"

.in +1c
.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_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_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_ndx)"
.br
.RI "Add data channels\&. "
.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_remove_channels\fP (globus_ftp_control_handle_t *handle, unsigned int num_channels, unsigned int stripe_ndx)"
.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_ndx)"
.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_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_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_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_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_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_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_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_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_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_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_data_force_close\fP (globus_ftp_control_handle_t *control_handle, \fBglobus_ftp_control_callback_t\fP close_callback_func, void *close_arg)"
.br
.RI "Close data connections\&. "
.in -1c
.SH "Detailed Description"
.PP 
Data Connections\&. 


.SH "Function Documentation"
.PP 
.SS "globus_result_t globus_ftp_control_create_data_info (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)"

.PP
Create a globus_ftp_control_data_write_info_t structure\&. This function 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 writer 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 occurred 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

.SS "globus_result_t globus_ftp_control_data_add_channels (globus_ftp_control_handle_t * handle, unsigned int num_channels, unsigned int stripe_ndx)"

.PP
Add data channels\&. Opens additional data channels (connections) to the host identified by the stripe parameter\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP A pointer to a FTP control handle\&. This handle is used to determine the host corresponding to the stripe number and to store information about any channels added by this function\&. 
.br
\fInum_channels\fP The number of additional channels to add\&. 
.br
\fIstripe_ndx\fP A integer identifying the stripe to add channels too\&. In the case of non-striped transfer this parameter will be ignored\&. 
.RE
.PP

.SS "globus_result_t globus_ftp_control_data_connect_read (globus_ftp_control_handle_t * handle, globus_ftp_control_data_connect_callback_t callback, void * user_arg)"

.PP
Create an incoming FTP data connection\&. This function will register a globus_io_{accept, connect}\&. Further accepts/connects are done by registering a new accept/connect in the current accept/connect callback\&. A call to either \fBglobus_ftp_control_local_pasv()\fP or \fBglobus_ftp_control_local_port()\fP needs to precede this calling this function\&. This function may be followed by a globus_ftp_data_read\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP A pointer to a FTP control handle which is configured to create an incoming data connection\&.
.br
\fIcallback\fP This callback is called when the connection occurs\&. This parameter may be NULL\&.
.br
\fIuser_arg\fP The user argument passed to the connect callback\&. 
.RE
.PP

.SS "globus_result_t globus_ftp_control_data_connect_write (globus_ftp_control_handle_t * handle, globus_ftp_control_data_connect_callback_t callback, void * user_arg)"

.PP
Create an outgoing FTP data connection\&. This function will register a globus_io_{accept, connect}\&. Further accepts/connects are done by registering a new accept/connect in the current accept/connect callback\&. A call to either \fBglobus_ftp_control_local_pasv()\fP or \fBglobus_ftp_control_local_port()\fP needs to precede this calling this function\&. This function may be followed by a globus_ftp_data_write\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP A pointer to a FTP control handle which is configured to create an outgoing data connection\&.
.br
\fIcallback\fP This callback is called when the connection occurs\&. This parameter may be NULL\&.
.br
\fIuser_arg\fP The user argument passed to the connect callback\&. 
.RE
.PP

.SS "globus_result_t globus_ftp_control_data_force_close (globus_ftp_control_handle_t * control_handle, \fBglobus_ftp_control_callback_t\fP close_callback_func, void * close_arg)"

.PP
Close data connections\&. Forces an immediate close of all data connections\&.
.PP
\fBParameters\fP
.RS 4
\fIcontrol_handle\fP The globus_ftp_control_handle that is have its data connections closed\&. 
.br
\fIclose_callback_func\fP A user function that will be called when the data connections are closed\&. 
.br
\fIclose_arg\fP The user argument that will be threaded through to close_callback_func\&. 
.RE
.PP

.SS "globus_result_t globus_ftp_control_data_get_total_data_channels (globus_ftp_control_handle_t * handle, unsigned int * num_channels, unsigned int stripe_ndx)"

.PP
Get Total Data Channels For a Stripe\&. Returns the total number of data channels used so far in the current transfer on the given stripe\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP A pointer to a FTP control handle\&. This handle is used to determine the host corresponding to 'stripe' and number of channels corresponding to that host\&. 
.br
\fInum_channels\fP 
.br
\fIstripe_ndx\fP A integer identifying the stripe for which to return the number of channels\&. In the case of non-striped transfer this parameter should be zero\&. 
.RE
.PP

.SS "globus_result_t globus_ftp_control_data_query_channels (globus_ftp_control_handle_t * handle, unsigned int * num_channels, unsigned int stripe_ndx)"

.PP
Number of data channels\&. Returns the number of currently open channels for the host identified by the stripe parameter\&. This number may be less then the level of parallelism specified in local_parallelism, due to the possibility that some channels have not yet connected\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP A pointer to a FTP control handle\&. This handle is used to determine the host corresponding to 'stripe' and number of channels corresponding to that host\&. 
.br
\fInum_channels\fP 
.br
\fIstripe_ndx\fP A integer identifying the stripe for which to return the number of channels\&. In the case of non-striped transfer this parameter should be zero\&. 
.RE
.PP

.SS "globus_result_t globus_ftp_control_data_read (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)"

.PP
Read data from data connections\&. Reads data from data connection(s) and put them in the supplied buffer\&.
.PP
This function takes the given buffer and will try to read data from the data connection(s)\&.
.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 user supplied buffer into which data from the data connection(s) will be written 
.br
\fImax_length\fP The maximum length of the data that can be written to the buffer 
.br
\fIcallback\fP The function to be called once the data has been read 
.br
\fIcallback_arg\fP User supplied argument to the callback function 
.RE
.PP

.SS "globus_result_t globus_ftp_control_data_remove_channels (globus_ftp_control_handle_t * handle, unsigned int num_channels, unsigned int stripe_ndx)"

.PP
Remove Data Channels\&. Removes data channels (connections) to the host identified by the stripe parameter\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP A pointer to a FTP control handle\&. This handle is used to determine the host corresponding to the stripe number and to update information about any channels removed by this function\&. 
.br
\fInum_channels\fP The number of channels to remove\&. 
.br
\fIstripe_ndx\fP A integer identifying the stripe to remove channels from\&. In the case of non-striped transfer this parameter will be ignored\&. 
.RE
.PP

.SS "globus_result_t globus_ftp_control_data_send_eof (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)"

.PP
Send EOF\&. Sends an EOF message to each stripe along an open data connection\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP A pointer to a FTP control handle\&. This handle contains the state for a connection\&. 
.br
\fIcount[]\fP This array of integers should contain an integer that will be added to the current parallel data connection count on each stripe\&. The order of the integers corresponds to each stripe in the same order as what was returned from local_port()\&.
.RE
.PP
An EOF message must be sent to all receiving hosts in a transfer\&. The message contains the total number of data connections used by each stripe\&. Many stripes may be sending to a single receiver but only one EOF message may be sent\&. The count parameter allows the user to pass in the total number of data connections used by all other hosts\&. The local values are added to the passed in values and then sent to the receiver\&.
.PP
\fBParameters\fP
.RS 4
\fIarray_size\fP The number of elements in count[]\&. 
.br
\fIeof_message\fP 
.br
\fIcb\fP The function to be called when the eof message has been called\&. 
.br
\fIuser_arg\fP A user pointer that is threaded through to the user callback\&. 
.RE
.PP

.SS "globus_result_t globus_ftp_control_data_set_interface (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

.SS "globus_result_t globus_ftp_control_data_write (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)"

.PP
Write data to data connections\&. Writes data from the supplied buffer to data connection(s)
.PP
This function writes contained in the buffer to the data channel(s)\&.
.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 user supplied buffer from which data will written to the data connection(s) 
.br
\fIlength\fP The length of the data contained in the buffer\&. 
.br
\fIoffset\fP The offset in the file at which the data in the buffer starts 
.br
\fIeof\fP Indicates that the buffer is that last part of a file\&. In the striped case this will cause a EOF block to be send to every data node involved in the transfer\&. 
.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

.SS "globus_result_t globus_ftp_control_data_write_stripe (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)"

.PP
Write FTP data to a 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

.SS "globus_result_t globus_ftp_control_get_pbsz (globus_ftp_control_handle_t * handle, unsigned long * bufsize)"

.PP
Get data channel protection buffer size\&. Query the FTP control handle for the protection buffer size information\&.
.PP
This function queries the handle to determine the protection buffer size which is used by this handle\&. This value is used to determine how much data will be sent in each packet during a protected data transfer\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP A pointer to the FTP control handle to be updated 
.br
\fIbufsize\fP A pointer to a parameter to store the value of the protection buffer size\&. 
.RE
.PP

.SS "globus_result_t globus_ftp_control_local_dcau (globus_ftp_control_handle_t * handle, const \fBglobus_ftp_control_dcau_t\fP * dcau, gss_cred_id_t delegated_credential_handle)"

.PP
Set data channel DCAU\&. Update the FTP control handle with the given data channel authentication information\&.
.PP
If authentication is set to GLOBUS_FTP_CONTROL_DCAU_NONE, then protection will also be disabled for this control handle\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP A pointer to the FTP control handle to be updated 
.br
\fIdcau\fP A parameter specifying the data channel authentication mode\&. Possible values are No Authentication, Self Authentication and Subject-name authentication\&. 
.br
\fIdelegated_credential_handle\fP 
.RE
.PP

.SS "globus_result_t globus_ftp_control_local_layout (globus_ftp_control_handle_t * handle, \fBglobus_ftp_control_layout_t\fP * layout, globus_size_t data_size)"

.PP
Set data layout\&. Update the handle with the layout and the size of the data sent over the data channel\&.
.PP
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

.SS "globus_result_t globus_ftp_control_local_mode (globus_ftp_control_handle_t * handle, \fBglobus_ftp_control_mode_t\fP mode)"

.PP
Set data handle mode\&. Update the FTP control handle with the given mode information\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP A pointer to the FTP control handle to be updated 
.br
\fImode\fP Specifies the mode of the data connection\&. Possible modes are STREAM, BLOCK, EXTENDED BLOCK and COMPRESSED\&. Out of these only STREAM and EXTENDED BLOCK are supported in this implementation\&. Also, EXTENDED BLOCK is only supported in combination with the IMAGE type\&. 
.RE
.PP

.SS "globus_result_t globus_ftp_control_local_parallelism (globus_ftp_control_handle_t * handle, \fBglobus_ftp_control_parallelism_t\fP * parallelism)"

.PP
Set control handle parallelism\&. Set the parallelism information in a FTP control handle
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP A pointer to the FTP control handle for which the parallelism information is to be updated 
.br
\fIparallelism\fP A structure containing parallelism information 
.RE
.PP

.SS "globus_result_t globus_ftp_control_local_pasv (globus_ftp_control_handle_t * handle, globus_ftp_control_host_port_t * address)"

.PP
Create a passive socket\&. Create a local listening socket, bind it and return the address the socket is listening to\&. If there is a existing data connection it is closed\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP A pointer to a FTP control handle\&. Information about the listening socket is stored in the handle\&. 
.br
\fIaddress\fP The host IP address and port is returned through this parameter\&. 
.RE
.PP

.SS "globus_result_t globus_ftp_control_local_pbsz (globus_ftp_control_handle_t * handle, unsigned long bufsize)"

.PP
Set data channel protection buffer size\&. Update the FTP control handle with the given protection buffer size information\&.
.PP
This function sets protection buffer size to be used by this handle\&. This value is used to determine how much data will be sent in each packet during a protected data transfer\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP A pointer to the FTP control handle to be updated 
.br
\fIbufsize\fP A parameter specifying the protection buffer size value\&. 
.RE
.PP

.SS "globus_result_t globus_ftp_control_local_port (globus_ftp_control_handle_t * handle, globus_ftp_control_host_port_t * address)"

.PP
Set remote data address\&. Insert the host/port information returned by a PASV on the remote host into the local FTP control handle\&. (close any outstanding data con)
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP A pointer to the FTP control handle into which to insert the host/port information 
.br
\fIaddress\fP The host IP address and port 
.RE
.PP

.SS "globus_result_t globus_ftp_control_local_send_eof (globus_ftp_control_handle_t * handle, globus_bool_t send_eof)"

.PP
Enable or disable automatic EOF handling\&. Determines if the library will automatically send an EOF message in extended block mode, or if the user will have to explicitly do it by calling \fBglobus_ftp_control_data_send_eof()\fP\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP The ftp handle you wish to sent the send_eof attribute on\&.
.br
\fIsend_eof\fP A boolean representing whether or not to automatically send an EOF message\&. 
.RE
.PP

.SS "globus_result_t globus_ftp_control_local_spas (globus_ftp_control_handle_t * handle, globus_ftp_control_host_port_t addresses[], unsigned int num_addresses)"

.PP
Create multiple passive sockets\&. Create num_addresses local listening sockets, bind them and return the addresses the sockets are listening to\&. If there is a existing data connection it is closed\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP A pointer to a FTP control handle\&. Information about the listening sockets is stored in the handle\&. 
.br
\fIaddresses\fP The host IP addresses and ports are returned through this parameter\&. 
.br
\fInum_addresses\fP The number of listening sockets to create 
.RE
.PP

.SS "globus_result_t globus_ftp_control_local_spor (globus_ftp_control_handle_t * handle, globus_ftp_control_host_port_t addresses[], unsigned int num_addresses)"

.PP
Set remote data addresses\&. Insert the host/port addresses returned by a SPAS on the remote host into the local FTP control handle\&. If there are any outstanding data connections at this point, they are closed\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP A pointer to the FTP control handle into which to insert the host/port addresses 
.br
\fIaddresses\fP The host IP addresses and port numbers 
.br
\fInum_addresses\fP The number of addresses 
.RE
.PP

.SS "globus_result_t globus_ftp_control_local_stru (globus_ftp_control_handle_t * handle, \fBglobus_ftp_control_structure_t\fP structure)"

.PP
Set data channel structure\&. Updates the handle with information on the structure of the data being sent on the data channel\&.
.PP
This function updates the handle with the provided structure information\&. At this point the only structure type that is supported is the file type\&.
.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
\fIstructure\fP This parameter is used to pass the structure information\&. Possible values are file, record and page\&. Only the file type is supported 
.RE
.PP

.SS "globus_result_t globus_ftp_control_local_tcp_buffer (globus_ftp_control_handle_t * handle, \fBglobus_ftp_control_tcpbuffer_t\fP * tcp_buffer)"

.PP
Set data handle TCP buffer size\&. Update the FTP control handle with the given socket buffer information\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP A pointer to the FTP control handle to be updated 
.br
\fItcp_buffer\fP A pointer to the socket buffer\&. 
.RE
.PP

.SS "globus_result_t globus_ftp_control_local_type (globus_ftp_control_handle_t * handle, \fBglobus_ftp_control_type_t\fP type, int form_code)"

.PP
Set control handle TYPE value\&. Update the FTP control handle with the given type information\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP A pointer to the FTP control handle to be updated 
.br
\fItype\fP The type of the data connection\&. Possible values are: ASCII, EBCDIC, IMAGE and LOCAL\&. Currently only ASCII and IMAGE types are supported\&. 
.br
\fIform_code\fP The logical byte size parameter for the LOCAL type\&. 
.RE
.PP

.SS "globus_result_t globus_ftp_control_release_data_info (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

.SS "globus_result_t globus_ftp_control_set_force_order (globus_ftp_control_handle_t * handle, globus_bool_t order_data, globus_off_t starting_offset)"

.PP
Set data handle to return read mode E data in order\&. Update the FTP control handle forced data order flag\&. Must be called before \fBglobus_ftp_control_data_connect_read()\fP\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP A pointer to the FTP control handle to be updated 
.br
\fIorder_data\fP GLOBUS_TRUE if data must be ordered, false if not\&. 
.br
\fIstarting_offset\fP The starting offset to expect\&. May not be 0 for restarted transfers\&.
.RE
.PP
Note that this may result in slower transfers, or, if the data arrives far out of order, failed transfers\&. 
.SS "globus_result_t globus_X_ftp_control_data_write_stripe (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)"

.PP
Write data to a stripe from an enqueue callback\&. This function allows the user to register the write of ftp data on a specific stripe\&. This function can only be called from an enqueue function callback\&. This function should be used only by the implementor of an enqueue function\&. 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 implementor 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 \fIX\fP 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

.SH "Author"
.PP 
Generated automatically by Doxygen for globus_ftp_control from the source code\&.