.TH "globus_ftp_client_throughput_plugin" 3 "Version 9.8" "globus_ftp_client" \" -*- nroff -*-
.ad l
.nh
.SH NAME
globus_ftp_client_throughput_plugin \- Throughput Performance Plugin
.PP
 \- Throughput Performance Plugin\&.  

.SH SYNOPSIS
.br
.PP
.SS "Macros"

.in +1c
.ti -1c
.RI "#define \fBGLOBUS_FTP_CLIENT_THROUGHPUT_PLUGIN_MODULE\fP   (&globus_i_ftp_client_throughput_plugin_module)"
.br
.in -1c
.SS "Typedefs"

.in +1c
.ti -1c
.RI "typedef void(* \fBglobus_ftp_client_throughput_plugin_begin_cb_t\fP) (void *user_specific, \fBglobus_ftp_client_handle_t\fP *handle, const char *source_url, const char *dest_url)"
.br
.ti -1c
.RI "typedef void(* \fBglobus_ftp_client_throughput_plugin_stripe_cb_t\fP) (void *user_specific, \fBglobus_ftp_client_handle_t\fP *handle, int stripe_ndx, globus_off_t bytes, float instantaneous_throughput, float avg_throughput)"
.br
.ti -1c
.RI "typedef void(* \fBglobus_ftp_client_throughput_plugin_total_cb_t\fP) (void *user_specific, \fBglobus_ftp_client_handle_t\fP *handle, globus_off_t bytes, float instantaneous_throughput, float avg_throughput)"
.br
.ti -1c
.RI "typedef void(* \fBglobus_ftp_client_throughput_plugin_complete_cb_t\fP) (void *user_specific, \fBglobus_ftp_client_handle_t\fP *handle, globus_bool_t success)"
.br
.ti -1c
.RI "typedef void *(* \fBglobus_ftp_client_throughput_plugin_user_copy_cb_t\fP) (void *user_specific)"
.br
.ti -1c
.RI "typedef void(* \fBglobus_ftp_client_throughput_plugin_user_destroy_cb_t\fP) (void *user_specific)"
.br
.in -1c
.SS "Functions"

.in +1c
.ti -1c
.RI "globus_result_t \fBglobus_ftp_client_throughput_plugin_init\fP (\fBglobus_ftp_client_plugin_t\fP *plugin, \fBglobus_ftp_client_throughput_plugin_begin_cb_t\fP begin_cb, \fBglobus_ftp_client_throughput_plugin_stripe_cb_t\fP per_stripe_cb, \fBglobus_ftp_client_throughput_plugin_total_cb_t\fP total_cb, \fBglobus_ftp_client_throughput_plugin_complete_cb_t\fP complete_cb, void *user_specific)"
.br
.ti -1c
.RI "globus_result_t \fBglobus_ftp_client_throughput_plugin_set_copy_destroy\fP (\fBglobus_ftp_client_plugin_t\fP *plugin, \fBglobus_ftp_client_throughput_plugin_user_copy_cb_t\fP copy_cb, \fBglobus_ftp_client_throughput_plugin_user_destroy_cb_t\fP destroy_cb)"
.br
.ti -1c
.RI "globus_result_t \fBglobus_ftp_client_throughput_plugin_destroy\fP (\fBglobus_ftp_client_plugin_t\fP *plugin)"
.br
.ti -1c
.RI "globus_result_t \fBglobus_ftp_client_throughput_plugin_get_user_specific\fP (\fBglobus_ftp_client_plugin_t\fP *plugin, void **user_specific)"
.br
.in -1c
.SH "Detailed Description"
.PP 
Throughput Performance Plugin\&. 

The FTP Throughput Performance plugin allows the user to obtain calculated performance information for all types of transfers except a third party transfer in which Extended Block mode is not enabled\&.
.PP
Note: Since this plugin is built on top of the Performance Marker Plugin, it is not possible to associate both plugins with a handle 
.SH "Macro Definition Documentation"
.PP 
.SS "#define GLOBUS_FTP_CLIENT_THROUGHPUT_PLUGIN_MODULE   (&globus_i_ftp_client_throughput_plugin_module)"
Module descriptor 
.SH "Typedef Documentation"
.PP 
.SS "typedef void(* globus_ftp_client_throughput_plugin_begin_cb_t) (void *user_specific, \fBglobus_ftp_client_handle_t\fP *handle, const char *source_url, const char *dest_url)"
Transfer begin callback
.PP
This callback will be called when a transfer begins
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP The client handle associated with this transfer
.br
\fIuser_specific\fP User argument passed to globus_ftp_client_throughput_plugin_init
.br
\fIsource_url\fP source of the transfer (GLOBUS_NULL if 'put')
.br
\fIdest_url\fP dest of the transfer (GLOBUS_NULL if 'get')
.RE
.PP
\fBReturns\fP
.RS 4
.IP "\(bu" 2
n/a 
.PP
.RE
.PP

.SS "typedef void(* globus_ftp_client_throughput_plugin_complete_cb_t) (void *user_specific, \fBglobus_ftp_client_handle_t\fP *handle, globus_bool_t success)"
Transfer complete callback
.PP
This callback will be called upon transfer completion (successful or otherwise)
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP The client handle associated with this transfer
.br
\fIuser_specific\fP User argument passed to globus_ftp_client_throughput_plugin_init
.br
\fIsuccess\fP indicates whether this transfer completed successfully or was interrupted (by error or abort)
.RE
.PP
\fBReturns\fP
.RS 4
.IP "\(bu" 2
n/a 
.PP
.RE
.PP

.SS "typedef void(* globus_ftp_client_throughput_plugin_stripe_cb_t) (void *user_specific, \fBglobus_ftp_client_handle_t\fP *handle, int stripe_ndx, globus_off_t bytes, float instantaneous_throughput, float avg_throughput)"
Stripe performance throughput callback
.PP
This callback will be called with every performance callback that is received by the perf plugin\&. The first callback for each stripe_ndx will have an instantaneous_throughput based from the time the command was sent\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP The client handle associated with this transfer
.br
\fIuser_specific\fP User argument passed to globus_ftp_client_throughput_plugin_init
.br
\fIbytes\fP The total number of bytes received on this stripe
.br
\fIinstantaneous_throughput\fP Instanteous throughput on this stripe (bytes / sec)
.br
\fIavg_throughput\fP Average throughput on this stripe (bytes / sec)
.br
\fIstripe_ndx\fP This stripe's index 
.RE
.PP

.SS "typedef void(* globus_ftp_client_throughput_plugin_total_cb_t) (void *user_specific, \fBglobus_ftp_client_handle_t\fP *handle, globus_off_t bytes, float instantaneous_throughput, float avg_throughput)"
Total performance throughput callback
.PP
This callback will be called with every performance callback that is received by the perf plugin\&. The first callback for will have an instantaneous_throughput based from the time the command was sent\&. This callback will be called after the per_stripe_cb
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP The client handle associated with this transfer
.br
\fIuser_specific\fP User argument passed to globus_ftp_client_throughput_plugin_init
.br
\fIbytes\fP The total number of bytes received on all stripes
.br
\fIinstantaneous_throughput\fP Total instanteous throughput on all stripes (bytes / sec)
.br
\fIavg_throughput\fP Average total throughput on all stripes (bytes / sec) 
.RE
.PP

.SS "typedef void *(* globus_ftp_client_throughput_plugin_user_copy_cb_t) (void *user_specific)"
Copy constructor
.PP
This callback will be called when a copy of this plugin is made, it is intended to allow initialization of a new user_specific data
.PP
\fBParameters\fP
.RS 4
\fIuser_specific\fP this is user specific data either created by this copy method, or the value passed to init
.RE
.PP
\fBReturns\fP
.RS 4
.IP "\(bu" 2
a pointer to a user specific piece of data
.IP "\(bu" 2
GLOBUS_NULL (does not indicate error) 
.PP
.RE
.PP

.SS "typedef void(* globus_ftp_client_throughput_plugin_user_destroy_cb_t) (void *user_specific)"
Destructor
.PP
This callback will be called when a copy of this plugin is destroyed, it is intended to allow the user to free up any memory associated with the user specific data
.PP
\fBParameters\fP
.RS 4
\fIuser_specific\fP this is user specific data created by the copy method
.RE
.PP
\fBReturns\fP
.RS 4
.IP "\(bu" 2
n/a 
.PP
.RE
.PP

.SH "Function Documentation"
.PP 
.SS "globus_result_t globus_ftp_client_throughput_plugin_destroy (\fBglobus_ftp_client_plugin_t\fP * plugin)"
Destroy throughput plugin
.PP
Frees up memory associated with plugin
.PP
\fBParameters\fP
.RS 4
\fIplugin\fP plugin previously initialized with init (above)
.RE
.PP
\fBReturns\fP
.RS 4
.IP "\(bu" 2
GLOBUS_SUCCESS
.IP "\(bu" 2
Error on NULL plugin 
.PP
.RE
.PP

.SS "globus_result_t globus_ftp_client_throughput_plugin_get_user_specific (\fBglobus_ftp_client_plugin_t\fP * plugin, void ** user_specific)"
Retrieve user specific pointer
.PP
\fBParameters\fP
.RS 4
\fIplugin\fP plugin previously initialized with init (above)
.br
\fIuser_specific\fP pointer to storage for user_specific pointer
.RE
.PP
\fBReturns\fP
.RS 4
.IP "\(bu" 2
GLOBUS_SUCCESS
.IP "\(bu" 2
Error on NULL plugin
.IP "\(bu" 2
Error on NULL user_specific 
.PP
.RE
.PP

.SS "globus_result_t globus_ftp_client_throughput_plugin_init (\fBglobus_ftp_client_plugin_t\fP * plugin, \fBglobus_ftp_client_throughput_plugin_begin_cb_t\fP begin_cb, \fBglobus_ftp_client_throughput_plugin_stripe_cb_t\fP per_stripe_cb, \fBglobus_ftp_client_throughput_plugin_total_cb_t\fP total_cb, \fBglobus_ftp_client_throughput_plugin_complete_cb_t\fP complete_cb, void * user_specific)"
Throughput plugin init
.PP
Use this function to initialize a throughput plugin\&. The throughput plugin sits on top of the perf_plugin\&. The only required param is 'plugin', all others may be GLOBUS_NULL
.PP
\fBParameters\fP
.RS 4
\fIplugin\fP a pointer to a plugin type to be initialized
.br
\fIbegin_cb\fP the callback to be called upon the start of a transfer
.br
\fIper_stripe_cb\fP the callback to be called every time updated throughput info is available for a given stripe
.br
\fItotal_cb\fP the callback to be called every time updated throughput info is available for any stripe
.br
\fIcomplete_cb\fP the callback to be called to indicate transfer completion
.br
\fIuser_specific\fP a pointer to some user specific data that will be provided to all callbacks
.RE
.PP
\fBReturns\fP
.RS 4
.IP "\(bu" 2
GLOBUS_SUCCESS
.IP "\(bu" 2
Error on NULL plugin
.IP "\(bu" 2
Error on init perf plugin 
.PP
.RE
.PP

.SS "globus_result_t globus_ftp_client_throughput_plugin_set_copy_destroy (\fBglobus_ftp_client_plugin_t\fP * plugin, \fBglobus_ftp_client_throughput_plugin_user_copy_cb_t\fP copy_cb, \fBglobus_ftp_client_throughput_plugin_user_destroy_cb_t\fP destroy_cb)"
Set user copy and destroy callbacks
.PP
Use this to have the plugin make callbacks any time a copy of this plugin is being made\&. This will allow the user to keep state for different handles\&.
.PP
\fBParameters\fP
.RS 4
\fIplugin\fP plugin previously initialized with init (above)
.br
\fIcopy_cb\fP func to be called when a copy is needed
.br
\fIdestroy_cb\fP func to be called when a copy is to be destroyed
.RE
.PP
\fBReturns\fP
.RS 4
.IP "\(bu" 2
Error on NULL arguments
.IP "\(bu" 2
GLOBUS_SUCCESS 
.PP
.RE
.PP

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