GLOBUS_FTP_CLIENT_THROUGHPUT_PLUGIN_MODULE(3)
๐ globus_ftp_client_throughput_plugin โ Throughput Performance Plugin ๐
okay bestie, sit down, because this is the globus_ftp_client_throughput_plugin page from the globus_ftp_client manual (section 3, library functions, you know the vibe) and it's literally a whole plugin for watching your FTP transfers go zoom. ๐ฆ
โจ NAME โจ
globus_ftp_client_throughput_plugin โ Throughput Performance Plugin
Throughput Performance Plugin. (yes it says it twice, it's that iconic)
๐ธ SYNOPSIS ๐ธ
Macros
#define GLOBUS_FTP_CLIENT_THROUGHPUT_PLUGIN_MODULE
(&globus_i_ftp_client_throughput_plugin_module)
Typedefs
typedef void(* globus_ftp_client_throughput_plugin_begin_cb_t) (void
*user_specific, globus_ftp_client_handle_t *handle, const char
*source_url, const char *dest_url)
typedef void(* globus_ftp_client_throughput_plugin_stripe_cb_t) (void
*user_specific, globus_ftp_client_handle_t *handle, int stripe_ndx,
globus_off_t bytes, float instantaneous_throughput, float
avg_throughput)
typedef void(* globus_ftp_client_throughput_plugin_total_cb_t) (void
*user_specific, globus_ftp_client_handle_t *handle, globus_off_t
bytes, float instantaneous_throughput, float avg_throughput)
typedef void(* globus_ftp_client_throughput_plugin_complete_cb_t) (void
*user_specific, globus_ftp_client_handle_t *handle, globus_bool_t
success)
typedef void *(* globus_ftp_client_throughput_plugin_user_copy_cb_t)
(void *user_specific)
typedef void(* globus_ftp_client_throughput_plugin_user_destroy_cb_t)
(void *user_specific)
Functions
globus_result_t globus_ftp_client_throughput_plugin_init
(globus_ftp_client_plugin_t *plugin,
globus_ftp_client_throughput_plugin_begin_cb_t begin_cb,
globus_ftp_client_throughput_plugin_stripe_cb_t per_stripe_cb,
globus_ftp_client_throughput_plugin_total_cb_t total_cb,
globus_ftp_client_throughput_plugin_complete_cb_t complete_cb, void
*user_specific)
globus_result_t globus_ftp_client_throughput_plugin_set_copy_destroy
(globus_ftp_client_plugin_t *plugin,
globus_ftp_client_throughput_plugin_user_copy_cb_t copy_cb,
globus_ftp_client_throughput_plugin_user_destroy_cb_t destroy_cb)
globus_result_t globus_ftp_client_throughput_plugin_destroy
(globus_ftp_client_plugin_t *plugin)
globus_result_t globus_ftp_client_throughput_plugin_get_user_specific
(globus_ftp_client_plugin_t *plugin, void **user_specific)
๐ฅ Detailed Description ๐ฅ
Throughput Performance Plugin.
The FTP Throughput Performance plugin lets you get calculated performance info for basically every kind of transfer โ EXCEPT a third party transfer where Extended Block mode is not enabled. so like, not that one, sorry babe. ๐ญ
๐ Note, and this one MATTERS: since this plugin is built on top of the Performance Marker Plugin, you literally cannot associate both plugins with a handle. pick a lane bestie, the handle can only hold one.
๐ Macro Definition Documentation ๐
#define GLOBUS_FTP_CLIENT_THROUGHPUT_PLUGIN_MODULE
(&globus_i_ftp_client_throughput_plugin_module)
Module descriptor. that's it, that's the whole thing. iconic minimalism. ๐
๐ Typedef Documentation ๐
typedef void(* globus_ftp_client_throughput_plugin_begin_cb_t) (void *user_specific, globus_ftp_client_handle_t *handle, const char *source_url, const char *dest_url)
Transfer begin callback โจ
This one gets called when a transfer begins. like the opening credits.
Parameters
handleโ the client handle associated with this transferuser_specificโ the user argument you passed toglobus_ftp_client_throughput_plugin_initsource_urlโ source of the transfer (GLOBUS_NULLif it's a 'put')dest_urlโ dest of the transfer (GLOBUS_NULLif it's a 'get')
Returns
- n/a
typedef void(* globus_ftp_client_throughput_plugin_complete_cb_t) (void *user_specific, globus_ftp_client_handle_t *handle, globus_bool_t success)
Transfer complete callback ๐
Called upon transfer completion โ successful or otherwise, so no pretending it always went great.
Parameters
handleโ the client handle associated with this transferuser_specificโ the user argument you passed toglobus_ftp_client_throughput_plugin_initsuccessโ indicates whether this transfer completed successfully or got interrupted (by error or abort)
Returns
- n/a
typedef void(* globus_ftp_client_throughput_plugin_stripe_cb_t) (void *user_specific, globus_ftp_client_handle_t *handle, int stripe_ndx, globus_off_t bytes, float instantaneous_throughput, float avg_throughput)
Stripe performance throughput callback ๐
This gets called with every performance callback the perf plugin receives. the first callback for each stripe_ndx has an instantaneous_throughput based from the time the command was sent. no cap.
Parameters
handleโ the client handle associated with this transferuser_specificโ the user argument you passed toglobus_ftp_client_throughput_plugin_initbytesโ the total number of bytes received on this stripeinstantaneous_throughputโ instanteous throughput on this stripe (bytes / sec)avg_throughputโ average throughput on this stripe (bytes / sec)stripe_ndxโ this stripe's index
typedef void(* globus_ftp_client_throughput_plugin_total_cb_t) (void *user_specific, globus_ftp_client_handle_t *handle, globus_off_t bytes, float instantaneous_throughput, float avg_throughput)
Total performance throughput callback ๐งฎ
Called with every performance callback the perf plugin receives too. the first callback will have an instantaneous_throughput based from the time the command was sent. and listen โ this callback gets called after the per_stripe_cb. order matters, periodt.
Parameters
handleโ the client handle associated with this transferuser_specificโ the user argument you passed toglobus_ftp_client_throughput_plugin_initbytesโ the total number of bytes received on all stripesinstantaneous_throughputโ total instanteous throughput on all stripes (bytes / sec)avg_throughputโ average total throughput on all stripes (bytes / sec)
typedef void *(* globus_ftp_client_throughput_plugin_user_copy_cb_t) (void *user_specific)
Copy constructor ๐งฌ
Called when a copy of this plugin is made. it's intended to let you initialize a new user_specific blob of data. fresh start, new you.
Parameters
user_specificโ this is user specific data either created by this copy method, or the value passed to init
Returns
- a pointer to a user specific piece of data
GLOBUS_NULL(and btw, that does not indicate error)
typedef void(* globus_ftp_client_throughput_plugin_user_destroy_cb_t) (void *user_specific)
Destructor ๐๏ธ
Called when a copy of this plugin is destroyed. intended to let you free up any memory hanging around with the user specific data. clean up after yourself bestie.
Parameters
user_specificโ this is user specific data created by the copy method
Returns
- n/a
๐ Function Documentation ๐
globus_result_t globus_ftp_client_throughput_plugin_destroy (globus_ftp_client_plugin_t * plugin)
Destroy throughput plugin ๐ฅ
Frees up memory associated with the plugin.
Parameters
pluginโ plugin previously initialized with init (above)
Returns
GLOBUS_SUCCESS- Error on NULL plugin
globus_result_t globus_ftp_client_throughput_plugin_get_user_specific (globus_ftp_client_plugin_t * plugin, void ** user_specific)
Retrieve user specific pointer ๐
Parameters
pluginโ plugin previously initialized with init (above)user_specificโ pointer to storage for user_specific pointer
Returns
GLOBUS_SUCCESS- Error on NULL plugin
- Error on NULL user_specific
globus_result_t globus_ftp_client_throughput_plugin_init (globus_ftp_client_plugin_t * plugin, globus_ftp_client_throughput_plugin_begin_cb_t begin_cb, globus_ftp_client_throughput_plugin_stripe_cb_t per_stripe_cb, globus_ftp_client_throughput_plugin_total_cb_t total_cb, globus_ftp_client_throughput_plugin_complete_cb_t complete_cb, void * user_specific)
Throughput plugin init ๐
Use this to initialize a throughput plugin. the throughput plugin sits on top of the perf_plugin. the only required param is plugin โ all the others may be GLOBUS_NULL. yes really, everything else is optional, go feral.
Parameters
pluginโ a pointer to a plugin type to be initializedbegin_cbโ the callback to be called upon the start of a transferper_stripe_cbโ the callback to be called every time updated throughput info is available for a given stripetotal_cbโ the callback to be called every time updated throughput info is available for any stripecomplete_cbโ the callback to be called to indicate transfer completionuser_specificโ a pointer to some user specific data that will be provided to all callbacks
Returns
GLOBUS_SUCCESS- Error on NULL plugin
- Error on init perf plugin
globus_result_t globus_ftp_client_throughput_plugin_set_copy_destroy (globus_ftp_client_plugin_t * plugin, globus_ftp_client_throughput_plugin_user_copy_cb_t copy_cb, globus_ftp_client_throughput_plugin_user_destroy_cb_t destroy_cb)
Set user copy and destroy callbacks ๐ซถ
Use this to have the plugin make callbacks any time a copy of this plugin is being made. this lets you keep state for different handles โ very main character of you honestly.
Parameters
pluginโ plugin previously initialized with init (above)copy_cbโ func to be called when a copy is neededdestroy_cbโ func to be called when a copy is to be destroyed
Returns
- Error on NULL arguments
GLOBUS_SUCCESS
โญ Author โญ
Generated automatically by Doxygen for globus_ftp_client from the source code. (so like, don't blame a human for the formatting, it was the robot ๐)
and that's the whole page bestie!! this came straight from globus_ftp_client, Version 9.9, living at globus_ftp...hput_plugin(3). go forth and measure those bytes per second. ๐ฆโจ๐
๐ฆ where this page comes from
- epel 10: globus-ftp-client-doc 9.9-1.el10_2 ยท Apache-2.0
- fedora 43: globus-ftp-client-doc 9.9-1.fc43 ยท Apache-2.0
- fedora 44: globus-ftp-client-doc 9.9-2.fc44 ยท Apache-2.0
- ubuntu resolute: libglobus-ftp-client-doc 9.9-1 ยท Apache-2.0
- ubuntu stonking: libglobus-ftp-client-doc 9.9-2build1 ยท Apache-2.0
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms