GLOBUS_FTP_CLIENT_PLUGIN_READ_T(3)
okay bestie, welcome to globus_ftp_client_plugins(3) from the Library Functions Manual π this is the plugin API and it's literally the moment.
β¨ NAME β¨
globus_ftp_client_plugins β Plugins
- Plugin API.
β¨ SYNOPSIS β¨
πΈ Topics πΈ
- Debugging Plugin β Debugging Plugin.
- Performance Marker Plugin β Performance Marker Plugin.
- Restart Marker Plugin β Restart Marker Plugin.
- Restart Plugin β Restart Plugin.
- Netlogger Throughput Plugin β Netlogger Throughput Plugin.
- Throughput Performance Plugin β Throughput Performance Plugin.
π¦ Data Structures π¦
struct globus_i_ftp_client_plugin_tβ FTP Client Plugin.
π Typedefs π
okay so here's the whole squad of typedefs, every single one, no skips π
typedef struct globus_i_ftp_client_plugin_t * globus_ftp_client_plugin_t
FTP Client plugin.
typedef globus_ftp_client_plugin_t *(* globus_ftp_client_plugin_copy_t)
(globus_ftp_client_plugin_t *plugin_template, void *plugin_specific)
typedef void(* globus_ftp_client_plugin_destroy_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific)
typedef void(* globus_ftp_client_plugin_connect_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url)
typedef void(* globus_ftp_client_plugin_authenticate_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, const
globus_ftp_control_auth_info_t *auth_info)
typedef void(* globus_ftp_client_plugin_chmod_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, int mode, const
globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
typedef void(* globus_ftp_client_plugin_chgrp_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, const char
*group, const globus_ftp_client_operationattr_t *attr, globus_bool_t
restart)
typedef void(* globus_ftp_client_plugin_utime_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, const struct tm
*utime_time, const globus_ftp_client_operationattr_t *attr,
globus_bool_t restart)
typedef void(* globus_ftp_client_plugin_symlink_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, const char
*link_url, const globus_ftp_client_operationattr_t *attr,
globus_bool_t restart)
typedef void(* globus_ftp_client_plugin_cksm_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, globus_off_t
offset, globus_off_t length, const char *algorithm, const
globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
typedef void(* globus_ftp_client_plugin_delete_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, const
globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
typedef void(* globus_ftp_client_plugin_feat_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, const
globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
typedef void(* globus_ftp_client_plugin_mkdir_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, const
globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
typedef void(* globus_ftp_client_plugin_rmdir_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, const
globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
typedef void(* globus_ftp_client_plugin_list_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, const
globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
typedef void(* globus_ftp_client_plugin_verbose_list_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, const
globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
typedef void(* globus_ftp_client_plugin_machine_list_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, const
globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
typedef void(* globus_ftp_client_plugin_recursive_list_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, const
globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
typedef void(* globus_ftp_client_plugin_mlst_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, const
globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
typedef void(* globus_ftp_client_plugin_stat_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, const
globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
typedef void(* globus_ftp_client_plugin_move_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *source_url, const
char *dest_url, const globus_ftp_client_operationattr_t *attr,
globus_bool_t restart)
typedef void(* globus_ftp_client_plugin_get_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, const
globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
typedef void(* globus_ftp_client_plugin_put_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, const
globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
typedef void(* globus_ftp_client_plugin_third_party_transfer_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *source_url, const
globus_ftp_client_operationattr_t *source_attr, const char
*dest_url, const globus_ftp_client_operationattr_t *dest_attr,
globus_bool_t restart)
typedef void(* globus_ftp_client_plugin_modification_time_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, const
globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
typedef void(* globus_ftp_client_plugin_size_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, const
globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
typedef void(* globus_ftp_client_plugin_abort_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle)
typedef void(* globus_ftp_client_plugin_read_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const globus_byte_t *buffer,
globus_size_t buffer_length)
typedef void(* globus_ftp_client_plugin_write_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const globus_byte_t *buffer,
globus_size_t buffer_length, globus_off_t offset, globus_bool_t eof)
typedef void(* globus_ftp_client_plugin_data_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, globus_object_t *error, const
globus_byte_t *buffer, globus_size_t length, globus_off_t offset,
globus_bool_t eof)
typedef void(* globus_ftp_client_plugin_command_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, const char
*command)
typedef void(* globus_ftp_client_plugin_response_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, globus_object_t
*error, const globus_ftp_control_response_t *ftp_response)
typedef void(* globus_ftp_client_plugin_fault_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, globus_object_t
*error)
typedef void(* globus_ftp_client_plugin_complete_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle)
typedef struct globus_i_ftp_client_plugin_t globus_i_ftp_client_plugin_t
FTP Client Plugin.
π Enumerations π
enum globus_ftp_client_plugin_command_mask_t { }
β¨ FUNCTIONS β¨
okay bestie, here's the whole roster of function pointers you can plug into your plugin. each one gets its own lil moment π
globus_result_t globus_ftp_client_plugin_restart_list (globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, const globus_abstime_t *when)globus_result_t globus_ftp_client_plugin_restart_verbose_list (globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, const globus_abstime_t *when)globus_result_t globus_ftp_client_plugin_restart_machine_list (globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, const globus_abstime_t *when)globus_result_t globus_ftp_client_plugin_restart_recursive_list (globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, const globus_abstime_t *when)globus_result_t globus_ftp_client_plugin_restart_mlst (globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, const globus_abstime_t *when)globus_result_t globus_ftp_client_plugin_restart_stat (globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, const globus_abstime_t *when)globus_result_t globus_ftp_client_plugin_restart_chmod (globus_ftp_client_handle_t *handle, const char *url, int mode, const globus_ftp_client_operationattr_t *attr, const globus_abstime_t *when)globus_result_t globus_ftp_client_plugin_restart_chgrp (globus_ftp_client_handle_t *handle, const char *url, const char *group, const globus_ftp_client_operationattr_t *attr, const globus_abstime_t *when)globus_result_t globus_ftp_client_plugin_restart_utime (globus_ftp_client_handle_t *handle, const char *url, const struct tm *utime_time, const globus_ftp_client_operationattr_t *attr, const globus_abstime_t *when)globus_result_t globus_ftp_client_plugin_restart_symlink (globus_ftp_client_handle_t *handle, const char *url, const char *link_url, const globus_ftp_client_operationattr_t *attr, const globus_abstime_t *when)globus_result_t globus_ftp_client_plugin_restart_cksm (globus_ftp_client_handle_t *handle, const char *url, globus_off_t offset, globus_off_t length, const char *algorithm, const globus_ftp_client_operationattr_t *attr, const globus_abstime_t *when)globus_result_t globus_ftp_client_plugin_restart_delete (globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, const globus_abstime_t *when)globus_result_t globus_ftp_client_plugin_restart_feat (globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, const globus_abstime_t *when)globus_result_t globus_ftp_client_plugin_restart_mkdir (globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, const globus_abstime_t *when)globus_result_t globus_ftp_client_plugin_restart_rmdir (globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, const globus_abstime_t *when)globus_result_t globus_ftp_client_plugin_restart_move (globus_ftp_client_handle_t *handle, const char *source_url, const char *dest_url, const globus_ftp_client_operationattr_t *attr, const globus_abstime_t *when)globus_result_t globus_ftp_client_plugin_restart_get (globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, globus_ftp_client_restart_marker_t *restart_marker, const globus_abstime_t *when)globus_result_t globus_ftp_client_plugin_restart_put (globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, globus_ftp_client_restart_marker_t *restart_marker, const globus_abstime_t *when)globus_result_t globus_ftp_client_plugin_restart_third_party_transfer (globus_ftp_client_handle_t *handle, const char *source_url, const globus_ftp_client_operationattr_t *source_attr, const char *dest_url, const globus_ftp_client_operationattr_t *dest_attr, globus_ftp_client_restart_marker_t *restart_marker, const globus_abstime_t *when)globus_result_t globus_ftp_client_plugin_restart_size (globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, const globus_abstime_t *when)globus_result_t globus_ftp_client_plugin_restart_modification_time (globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, const globus_abstime_t *when)globus_result_t globus_ftp_client_plugin_restart_get_marker (globus_ftp_client_handle_t *handle, globus_ftp_client_restart_marker_t *marker)globus_result_t globus_ftp_client_plugin_abort (globus_ftp_client_handle_t *handle)globus_result_t globus_ftp_client_plugin_add_data_channels (globus_ftp_client_handle_t *handle, unsigned int num_channels, unsigned int stripe)globus_result_t globus_ftp_client_plugin_remove_data_channels (globus_ftp_client_handle_t *handle, unsigned int num_channels, unsigned int stripe)
π DETAILED DESCRIPTION π
Plugin API.
so like, a plugin is literally just a way to implement reliability and performance tuning behavior that doesn't care about your specific app. it's app-independent, periodt. and you write plugins using the API described in this doc π
a plugin gets created by defining a globus_ftp_client_plugin_t, which holds all the function pointers and the plugin-specific data it needs to actually do its thing. and ngl, the recommended move is for a plugin to define a globus_module_descriptor_t plus some plugin initialization functions, so that everything is properly initialized. do it. don't skip it. it's giving responsible queen behavior β¨
the functions that your plugin points to get called when ~significant events~ happen in the life of an FTP Client operation. but here's the tea: plugins only get called when the plugin has the function pointer defined for both the operation (get, put, list, etc) and the event (connect, authenticate, command, etc). both. not one. both π«Ά and the command and response functions get filtered based on the command_mask defined in the plugin structure.
and every single plugin β no exceptions β must define copy and destroy functions.
- the copy function gets called when the plugin is added to an attribute set, or when a handle is initialized with an attribute set that contains the plugin.
- the destroy function gets called when the handle or attribute set is destroyed.
okay but literally do not forget those two, bestie, the whole thing falls apart π
π TYPEDEF DOCUMENTATION π
typedef void(* globus_ftp_client_plugin_abort_t) (globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle)
Plugin abort notification callback.
this callback is how you tell a plugin "hey, an abort is being requested on a client handle." and it fires in both cases β when the user aborts a request, and when a plugin aborts the currently active request. double duty, iconic π
Parameters
pluginβ The plugin which is being notified.plugin_specificβ Plugin-specific data.handleβ The handle associated with the request.
typedef void(* globus_ftp_client_plugin_authenticate_t) (globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_control_auth_info_t *auth_info)
Plugin authentication notification callback.
this one tells a plugin that an authentication handshake is happening for this client handle. it can fire when a new request is made, or when a plugin does a hard restart. π₯
and if a plugin defines a response_callback, then that one fires once the authentication has completed β whether it succeeded or didn't. either way, you get the callback. no ghosting π
Parameters
pluginβ The plugin which is being notified.plugin_specificβ Plugin-specific data.handleβ The handle associated with the connection.urlβ The URL of the server to connect to.auth_infoβ Authentication and authorization info being used to authenticate with the FTP or GridFTP server.
typedef void(* globus_ftp_client_plugin_chgrp_t) (globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const char *group, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Plugin chgrp notification callback.
this one notifies a plugin that a chgrp is being requested on a client handle. it happens in both situations: when the user requests a chgrp, and when a plugin restarts the currently active chgrp request. π¦
and listen β if this function is not defined by the plugin, then no plugin callbacks associated with the chgrp will be called. none. zero. that's the vibe check π
Parameters
pluginβ The plugin which is being notified.plugin_specificβ Plugin-specific data.handleβ The handle associated with the delete operation.urlβ The url to chgrp.groupβ The group name or ID to change to.attrβ The attributes to be used during this operation.restartβ This value is set toGLOBUS_TRUEwhen this callback is caused by a plugin restarting the current delete operation; otherwise, this is set toGLOBUS_FALSE.
typedef void(* globus_ftp_client_plugin_chmod_t) (globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, int mode, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Plugin chmod notification callback.
same energy, different command: this notifies a plugin that a chmod is being requested on a client handle. it fires both when the user requests a chmod and when a plugin restarts the currently active chmod request. π
and again β if this function is not defined by the plugin, then no plugin callbacks associated with the chmod will be called. so define it if you want in on the action, fr fr β¨
Parameters
pluginβ The plugin which is being notified.plugin_specificβ Plugin-specific data.handleβ The handle associated with the delete operation.urlβ The url to chmod.modeβ The file mode to be applied.attrβ The attributes to be used during this operation.restartβ This value is set toGLOBUS_TRUEwhen this callback is caused by a plugin restarting the current delete operation; otherwise, this is set toGLOBUS_FALSE.
typedef void(* globus_ftp_client_plugin_cksm_t) (globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, globus_off_t offset, globus_off_t length, const char *algorithm, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Plugin cksm notification callback.
and this cutie notifies a plugin that a cksm is being requested on a client handle. it happens both when the user requests a cksm, and when a plugin restarts the currently active cksm request. πΈ
If this function isn't defined by the plugin, then literally none of the plugin callbacks tied to the cksm get called. Not one. π«Ά
Parameters
pluginβ the plugin getting notified.plugin_specificβ plugin-specific data. πhandleβ the handle vibing with the delete operation.urlβ the url to cksm.offsetβ file offset where we start calculating the checksum.lengthβ how much data to read from the starting offset. Use-1to read the entire file. πalgorithmβ a pointer to a string that gets filled in with the checksum of the file. On error, the value it points at is undefined β so do not trust it, bestie. πattrβ the attributes to be used during this operation.restartβ set toGLOBUS_TRUEwhen this callback is caused by a plugin restarting the current delete operation; otherwise it'sGLOBUS_FALSE.
π globus_ftp_client_plugin_command_t β command callback
typedef void(* globus_ftp_client_plugin_command_t) (globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const char *command)
This one tells a plugin that an FTP control command is heading out the door. π¨ And listen β the client library will only call this for response callbacks tied to a command that's in the plugin's command mask, and tied to one of the other ftp operations that has a defined callback in the plugin. Both conditions, okay? It's giving exclusive. β¨
Parameters
pluginβ the plugin getting notified.plugin_specificβ plugin-specific data.handleβ the handle associated with the request.urlβ the URL this command is being sent to.commandβ a string containing the command being sent to the server (TYPE I, for example). π₯
π globus_ftp_client_plugin_complete_t β completion notification callback
typedef void(* globus_ftp_client_plugin_complete_t) (globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle)
Tells a plugin that an operation it started earlier is done done. π And here's the rule: the plugin may not call any other plugin operation on this handle after this has happened. This is the final callback for the plugin while it's processing the operation β the last one, periodt. Which means it's also the moment where the plugin is free to free any internal state it was holding for that operation. Go off, clean up. π§Ή
Parameters
pluginβ the plugin getting notified.plugin_specificβ plugin-specific data.handleβ the handle associated with the operation.
π¦ globus_ftp_client_plugin_connect_t β plugin connection begin function
typedef void(* globus_ftp_client_plugin_connect_t) (globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url)
This one lets a plugin know that connection establishment is happening for this client handle. It can pop off when a new request is made, or when a plugin does a restart. π
If a response_callback is defined by a plugin, then that one happens once the connection establishment has completed β successfully or unsuccessfully, either way. π
Parameters
pluginβ the plugin getting notified.plugin_specificβ plugin-specific data.handleβ the handle associated with the connection.urlβ the URL of the server to connect to.
Note: this function will not be called for a get, put, or third-party transfer operation when a cached connection is used. So if you were waiting on it β she's not coming. π
πΈ globus_ftp_client_plugin_copy_t β plugin copy function
typedef globus_ftp_client_plugin_t *(* globus_ftp_client_plugin_copy_t) (globus_ftp_client_plugin_t *plugin_template, void *plugin_specific)
This is the one that makes a brand new copy of a plugin, or just bumps its reference count. π«Ά The FTP Client library calls it when a plugin gets added to a handle attribute set, or when a handle is initialized with an attribute that contains the plugin.
Important: a plugin may not call any of the plugin API functions from it's instantiate method. Just don't. π«
Parameters
plugin_templateβ a plugin previously initialized by a call to the plugin-specific initialization function. by the user.plugin_specificβ plugin-specific data.
Returns
A pointer to a plugin. This plugin copy must remain valid until the copy's destroy function is called on the copy. π
See also
globus_ftp_client_plugin_destroy_t
π globus_ftp_client_plugin_data_t β plugin data callback handler
typedef void(* globus_ftp_client_plugin_data_t) (globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, globus_object_t *error, const globus_byte_t *buffer, globus_size_t length, globus_off_t offset, globus_bool_t eof)
Tells a plugin that a read or write operation it registered earlier has completed. π₯ The buffer pointer will match the one from a previous plugin read or write registration callback β same pointer, no switch-ups, iykyk.
Parameters
pluginβ the plugin getting notified.plugin_specificβ plugin-specific data.handleβ the handle associated with the request.errorβ an error which occurred while processing this command/response pair.bufferβ the buffer which was successfully transferred over the network. β¨lengthβ the amount of data to read or written.offsetβ the offset into the file where this data buffer belongs.eofβ set toGLOBUS_TRUEif end-of-file is being processed for this transfer. π
π globus_ftp_client_plugin_delete_t β plugin delete notification callback
typedef void(* globus_ftp_client_plugin_delete_t) (globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Tells a plugin that a delete is being requested on a client handle. It fires in both cases: when the user requests a delete, and when a plugin restarts the currently active delete request. π₯
And if this function isn't defined by the plugin, then no plugin callbacks associated with the delete will be called. None. Zero. π«
Parameters
pluginβ the plugin getting notified.plugin_specificβ plugin-specific data.handleβ the handle associated with the delete operation.urlβ the url to be deleted.attrβ the attributes to be used during this operation.restartβ set toGLOBUS_TRUEwhen this callback is caused by a plugin restarting the current delete operation; otherwise it'sGLOBUS_FALSE.
π globus_ftp_client_plugin_destroy_t β plugin destroy function
typedef void(* globus_ftp_client_plugin_destroy_t) (globus_ftp_client_plugin_t *plugin, void *plugin_specific)
This one frees a copy of a plugin, or drops its reference count β whichever applies. It's for a copy that got allocated by calling the instantiate function from the plugin. Bye bye, bestie. ππ
Parameters
pluginβ the plugin, created by the create function, which is to be destroyed.plugin_specificβ plugin-specific data.
π globus_ftp_client_plugin_fault_t β fault notification callback
typedef void(* globus_ftp_client_plugin_fault_t) (globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, globus_object_t *error)
Tells a plugin that a fault happened while processing the request. π The fault might be internally generated, or it might come from a call to another library β either way, this is how you find out.
Parameters
pluginβ the plugin getting notified.plugin_specificβ plugin-specific data.handleβ the handle associated with the request.urlβ the url being processed when the fault ocurred.errorβ an error object describing the fault.
β globus_ftp_client_plugin_feat_t β plugin feat notification callback
typedef void(* globus_ftp_client_plugin_feat_t) (globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Tells a plugin that a feat is being requested on a client handle. It pops off both when the user requests a feat, and when a plugin restarts the currently active feat request. π
If this function isn't defined by the plugin, then no plugin callbacks associated with the feat will be called. That's the deal. π€·
Parameters
pluginβ the plugin getting notified.plugin_specificβ plugin-specific data.handleβ the handle associated with the feat operation.urlβ the url to be feat'd.attrβ the attributes to be used during this operation.restartβ set toGLOBUS_TRUEwhen this callback is caused by a plugin restarting the current feat operation; otherwise it'sGLOBUS_FALSE.
π§ globus_ftp_client_plugin_get_t β plugin get notification callback
typedef void(* globus_ftp_client_plugin_get_t) (globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Tells a plugin that a get is being requested on a client handle. Happens both when the user requests a get, and when a plugin restarts the currently active get request. π₯β¨
If this function isn't defined by the plugin, then no plugin callbacks associated with the get will be called.
Parameters
pluginβ the plugin getting notified.plugin_specificβ plugin-specific data.handleβ the handle associated with the get operation.urlβ the url of the get operation.attrβ the attributes to be used during this transfer.restartβ set toGLOBUS_TRUEwhen this callback is caused by a plugin restarting the current get transfer; otherwise it'sGLOBUS_FALSE.
πΊ globus_ftp_client_plugin_list_t β plugin list notification callback
typedef void(* globus_ftp_client_plugin_list_t) (globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
Tells a plugin that a list is being requested on a client handle. Fires both when the user requests a list, and when a plugin restarts the currently active list request. π
If this function isn't defined by the plugin, then no plugin callbacks associated with the list will be called.
Parameters
pluginβ the plugin getting notified.plugin_specificβ plugin-specific data.handleβ the handle associated with the list operation.urlβ the url of the list operation.attrβ the attributes to be used during this transfer.restartβ set toGLOBUS_TRUEwhen this callback is caused by a plugin restarting the current list transfer; otherwise it'sGLOBUS_FALSE.
π globus_ftp_client_plugin_machine_list_t β plugin machine list notification callback
typedef void(* globus_ftp_client_plugin_machine_list_t) (globus_ftp_client_plugin_t *plugin, void *plugin_specific, globus_ftp_client_handle_t *handle, const char *url, const globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
This callback is your plugin's lil notification that a list is being asked for on a client handle. Bestie, it fires in both situations: when the user asks for a list, and when a plugin restarts the list request that's currently active. π
Heads up fr fr: if this function is not defined by the plugin, then no plugin callbacks associated with the list will be called. Not a single one. That's the whole vibe check. π
Parameters
pluginβ the plugin which is being notified π«Άplugin_specificβ plugin-specific datahandleβ the handle associated with the list operationurlβ the url of the list operationattrβ the attributes to be used during this transferrestartβ this value is set toGLOBUS_TRUEwhen this callback is caused by a plugin restarting the current list transfer; otherwise, this is set toGLOBUS_FALSEβ¨
πΈ globus_ftp_client_plugin_mkdir_t β Plugin mkdir notification callback
typedef void(* globus_ftp_client_plugin_mkdir_t) (globus_ftp_client_plugin_t
*plugin, void *plugin_specific, globus_ftp_client_handle_t *handle,
const char *url, const globus_ftp_client_operationattr_t *attr,
globus_bool_t restart)
This callback is used to notify a plugin that a mkdir is being requested on a client handle. It happens both when the user requests a mkdir, and when a plugin restarts the mkdir request that's currently active. two-for-one notification, we love to see it π
If this function is not defined by the plugin, then no plugin callbacks associated with the mkdir will be called. periodt.
Parameters
pluginβ the plugin which is being notified πplugin_specificβ plugin-specific datahandleβ the handle associated with the mkdir operationurlβ the url of the directory to createattrβ the attributes to be used during this operationrestartβ this value is set toGLOBUS_TRUEwhen this callback is caused by a plugin restarting the current mkdir operation; otherwise, this is set toGLOBUS_FALSE
π¦ globus_ftp_client_plugin_mlst_t β Plugin mlst notification callback
typedef void(* globus_ftp_client_plugin_mlst_t) (globus_ftp_client_plugin_t
*plugin, void *plugin_specific, globus_ftp_client_handle_t *handle,
const char *url, const globus_ftp_client_operationattr_t *attr,
globus_bool_t restart)
This callback is used to notify a plugin that a mlst is being requested on a client handle. This notification happens both when the user requests a list, and when a plugin restarts the currently active list request.
If this function is not defined by the plugin, then no plugin callbacks associated with the list will be called.
Parameters
pluginβ the plugin which is being notified β¨plugin_specificβ plugin-specific datahandleβ the handle associated with the list operationurlβ the url of the list operationattrβ the attributes to be used during this transferrestartβ this value is set toGLOBUS_TRUEwhen this callback is caused by a plugin restarting the current list transfer; otherwise, this is set toGLOBUS_FALSE
π okay so yes, the docs literally say "list" all over the mlst entry. Not me editing it β I'm just reading it to you exactly as it is, bestie. no cap. π
β globus_ftp_client_plugin_modification_time_t β Plugin modification time notification callback
typedef void(* globus_ftp_client_plugin_modification_time_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, const
globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
This callback is used to notify a plugin that a modification time check is being requested on a client handle. It fires both when the user requests the modification time of a file, and when a plugin restarts the request that's currently active. π
If this function is not defined by the plugin, then no plugin callbacks associated with the modification time request will be called.
Parameters
pluginβ the plugin which is being notified π«Άplugin_specificβ plugin-specific datahandleβ the handle associated with the list operationurlβ the url of the list operationattrβ the attributes to be used during this transferrestartβ this value is set toGLOBUS_TRUEwhen this callback is caused by a plugin restarting the current list transfer; otherwise, this is set toGLOBUS_FALSE
and yes, the "list operation"/"list transfer" wording is verbatim from the page. I am but a humble messenger π§
π₯ globus_ftp_client_plugin_move_t β Plugin move notification callback
typedef void(* globus_ftp_client_plugin_move_t) (globus_ftp_client_plugin_t
*plugin, void *plugin_specific, globus_ftp_client_handle_t *handle,
const char *source_url, const char *dest_url, const
globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
This callback is used to notify a plugin that a move is being requested on a client handle. Happens both when the user requests a move and when a plugin restarts the move request that's currently active. β¨
If this function is not defined by the plugin, then no plugin callbacks associated with the move will be called.
Parameters
pluginβ the plugin which is being notifiedplugin_specificβ plugin-specific datahandleβ the handle associated with the move operationsource_urlβ the source url of the move operationdest_urlβ the destination url of the move operationattrβ the attributes to be used during this moverestartβ this value is set toGLOBUS_TRUEwhen this callback is caused by a plugin restarting the current move transfer; otherwise, this is set toGLOBUS_FALSEπ
π globus_ftp_client_plugin_put_t β Plugin put notification callback
typedef void(* globus_ftp_client_plugin_put_t) (globus_ftp_client_plugin_t
*plugin, void *plugin_specific, globus_ftp_client_handle_t *handle,
const char *url, const globus_ftp_client_operationattr_t *attr,
globus_bool_t restart)
This callback is used to notify a plugin that a put is being requested on a client handle. Fires both when the user requests a put and when a plugin restarts the put request that's currently active. sending files up, iconic behaviour π
If this function is not defined by the plugin, then no plugin callbacks associated with the put will be called.
Parameters
pluginβ the plugin which is being notified πΈplugin_specificβ plugin-specific datahandleβ the handle associated with the put operationurlβ the url of the put operationattrβ the attributes to be used during this transferrestartβ this value is set toGLOBUS_TRUEwhen this callback is caused by a plugin restarting the current put transfer; otherwise, this is set toGLOBUS_FALSE
π globus_ftp_client_plugin_read_t β Plugin read registration callback
typedef void(* globus_ftp_client_plugin_read_t) (globus_ftp_client_plugin_t
*plugin, void *plugin_specific, globus_ftp_client_handle_t *handle,
const globus_byte_t *buffer, globus_size_t buffer_length)
This callback is used to notify a plugin that the client API has registered a buffer with the FTP control API for reading when processing a get. π₯
Parameters
pluginβ the plugin which is being notifiedplugin_specificβ plugin-specific datahandleβ the handle associated with the requestbufferβ the data buffer to read intobuffer_lengthβ the maximum amount of data to read into the buffer
note bestie: norestartparam here, and nourlorattreither. this one is built different. π
π globus_ftp_client_plugin_recursive_list_t β Plugin recursive list notification callback
typedef void(* globus_ftp_client_plugin_recursive_list_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, const
globus_ftp_client_operationattr_t *attr, globus_bool_t restart)
This callback is used to notify a plugin that a list is being requested on a client handle. This notification happens both when the user requests a list, and when a plugin restarts the currently active list request. π«
If this function is not defined by the plugin, then no plugin callbacks associated with the list will be called.
Parameters
pluginβ the plugin which is being notifiedplugin_specificβ plugin-specific datahandleβ the handle associated with the list operationurlβ the url of the list operationattrβ the attributes to be used during this transferrestartβ this value is set toGLOBUS_TRUEwhen this callback is caused by a plugin restarting the current list transfer; otherwise, this is set toGLOBUS_FALSEβ¨
π globus_ftp_client_plugin_response_t β Response callback
typedef void(* globus_ftp_client_plugin_response_t)
(globus_ftp_client_plugin_t *plugin, void *plugin_specific,
globus_ftp_client_handle_t *handle, const char *url, globus_object_t
*error, const globus_ftp_control_response_t *ftp_response)
This callback is used to notify a plugin that a FTP control response has occurred on a control connection. FTP response callbacks will come back to the user in the order which the commands were executed. The client library will only call this function for response callbacks associated with a command which is in the plugin's command mask, or associated with one of the other ftp operations with a defined callback in the plugin. π₯
Parameters
pluginβ the plugin which is being notifiedplugin_specificβ plugin-specific datahandleβ the handle associated with the requesturlβ the URL which this response came fromerrorβ an error which occurred while processing this command/response pairftp_responseβ the response structure from the ftp control library
π§ globus_ftp_client_plugin_rmdir_t β Plugin rmdir notification callback
typedef void(* globus_ftp_client_plugin_rmdir_t) (globus_ftp_client_plugin_t
*plugin, void *plugin_specific, globus_ftp_client_handle_t *handle,
const char *url, const globus_ftp_client_operationattr_t *attr,
globus_bool_t restart)
This callback is used to notify a plugin that a rmdir is being requested on a client handle. This notification happens both when the user requests a rmdir, and when a plugin restarts the currently active rmdir request. ποΈ
If this function is not defined by the plugin, then no plugin callbacks associated with the rmdir will be called.
Parameters
pluginβ the plugin which is being notified πplugin_specificβ plugin-specific datahandleβ the handle associated with the rmdir operationurlβ the url of the rmdir operationattrβ the attributes to be used during this operationrestartβ this value is set toGLOBUS_TRUEwhen this callback is caused by a plugin restarting the current rmdir operation; otherwise, this is set toGLOBUS_FALSE
π globus_ftp_client_plugin_size_t β Plugin size notification callback
typedef void(* globus_ftp_client_plugin_size_t) (globus_ftp_client_plugin_t
*plugin, void *plugin_specific, globus_ftp_client_handle_t *handle,
const char *url, const globus_ftp_client_operationattr_t *attr,
globus_bool_t restart)
This callback is used to notify a plugin that a size check is being requested on a client handle. It happens both when the user requests the size of a file, and when a plugin restarts the request that's currently active. π
If this function is not defined by the plugin, then no plugin callbacks associated with the size request will be called.
okay so before we bounce to the next one, here are the params for the callback we were just vibing with π«Ά:
pluginβ the plugin which is being notified πplugin_specificβ plugin-specific data, aka each plugin's own little stash of extras πhandleβ the handle associated with the list operation β¨urlβ the url of the list operation πΈattrβ the attributes to be used during this transfer πrestartβ this isGLOBUS_TRUEwhen a plugin is the whole reason we're restarting the current list transfer, andGLOBUS_FALSEany other time π
globus_ftp_client_plugin_stat_t
typedef void(* globus_ftp_client_plugin_stat_t) (globus_ftp_client_plugin_t *plugin,
void *plugin_specific,
globus_ftp_client_handle_t *handle,
const char *url,
const globus_ftp_client_operationattr_t *attr,
globus_bool_t restart)
Plugin stat notification callback. π
This is the lil messenger that tells a plugin hey bestie, somebody's asking for a stat on this client handle. And it fires in two situations, no cap: when the user asks for a list, and when a plugin restarts the list request that's currently active. Same callback, different plotline β¨
β οΈ real talk: if the plugin doesn't define this function, then none of the plugin callbacks tied to the list will get called. Like, zero. π
Parameters
pluginβ the plugin which is being notified πplugin_specificβ plugin-specific data πhandleβ the handle associated with the list operation β¨urlβ the url of the list operation πΈattrβ the attributes to be used during this transfer πrestartβGLOBUS_TRUEwhen a plugin is restarting the current list transfer, otherwiseGLOBUS_FALSEπ
globus_ftp_client_plugin_symlink_t
typedef void(* globus_ftp_client_plugin_symlink_t) (globus_ftp_client_plugin_t *plugin,
void *plugin_specific,
globus_ftp_client_handle_t *handle,
const char *url,
const char *link_url,
const globus_ftp_client_operationattr_t *attr,
globus_bool_t restart)
Plugin symlink notification callback. π¦
This one slides into a plugin's DMs to say a symlink is being requested on a client handle. It happens both when the user requests a symlink and when a plugin restarts the symlink request that's currently active. so iconic of it β¨
β οΈ if this function isn't defined by the plugin, then none of the plugin callbacks associated with the symlink get called. periodt. π
Parameters
pluginβ the plugin which is being notified πplugin_specificβ plugin-specific data πhandleβ the handle associated with the symlink operation β¨urlβ the url of the new link πΈlink_urlβ the url to which the new link should point π―attrβ the attributes to be used during this operation πrestartβGLOBUS_TRUEwhen a plugin is the cause of restarting the current utime operation, otherwiseGLOBUS_FALSEπ (yes bestie, the original really says utime there, we don't make the rules π)
globus_ftp_client_plugin_t
typedef struct globus_i_ftp_client_plugin_t* globus_ftp_client_plugin_t
FTP Client plugin. π
An FTP Client plugin is the whole entire moment β it's how you add restart, monitoring, and performance tuning operations to the FTP Client library without touching the base API. And you're not limited to one, bestie: multiple plugins may be associated with a single globus_ftp_client_handle_t. polyamory but for callbacks π
See also
globus_ftp_client_handle_init()globus_ftp_client_handle_destroy()globus_ftp_client_handleattr_t- Debugging Plugin
globus_ftp_client_plugin_third_party_transfer_t
typedef void(* globus_ftp_client_plugin_third_party_transfer_t) (globus_ftp_client_plugin_t *plugin,
void *plugin_specific,
globus_ftp_client_handle_t *handle,
const char *source_url,
const globus_ftp_client_operationattr_t *source_attr,
const char *dest_url,
const globus_ftp_client_operationattr_t *dest_attr,
globus_bool_t restart)
Plugin third-party transfer notification callback. π₯
The notification that says a transfer is being requested on a client handle. Fires in two cases: when the user requests a transfer, and when a plugin restarts the transfer request that's currently active. main character behaviour fr fr β¨
β οΈ no definition of this function in the plugin? then none of the plugin callbacks associated with the third-party transfer get called. that's the rule π«Ά
Parameters
pluginβ the plugin which is being notified πplugin_specificβ plugin-specific data πhandleβ the handle associated with the transfer operation β¨source_urlβ the source url of the transfer operation πΈsource_attrβ the attributes to be used during this transfer on the source πdest_urlβ the destination url of the third-party transfer operation π―dest_attrβ the attributes to be used during this transfer on the destination πrestartβGLOBUS_TRUEwhen a plugin restarting the current transfer transfer is the cause, otherwiseGLOBUS_FALSEπ (and yes, "transfer transfer" is in there twice, we are simply relaying the lore π)
globus_ftp_client_plugin_utime_t
typedef void(* globus_ftp_client_plugin_utime_t) (globus_ftp_client_plugin_t *plugin,
void *plugin_specific,
globus_ftp_client_handle_t *handle,
const char *url,
const struct tm *utime_time,
const globus_ftp_client_operationattr_t *attr,
globus_bool_t restart)
Plugin utime notification callback. β°
Tells a plugin a utime is being requested on a client handle. Happens when the user requests a utime, and also when a plugin restarts the currently active utime request. double duty, no complaints π
β οΈ if the plugin doesn't define this function, then none of the plugin callbacks associated with the utime will be called. full stop π
Parameters
pluginβ the plugin which is being notified πplugin_specificβ plugin-specific data πhandleβ the handle associated with the utime operation β¨urlβ the url to utime πΈutime_timeβ the modification time to change the file to π°οΈattrβ the attributes to be used during this operation πrestartβGLOBUS_TRUEwhen a plugin restarting the current utime operation is the cause, otherwiseGLOBUS_FALSEπ
globus_ftp_client_plugin_verbose_list_t
typedef void(* globus_ftp_client_plugin_verbose_list_t) (globus_ftp_client_plugin_t *plugin,
void *plugin_specific,
globus_ftp_client_handle_t *handle,
const char *url,
const globus_ftp_client_operationattr_t *attr,
globus_bool_t restart)
Plugin verbose list notification callback. πβ¨
This is the one that goes bestie, a list is being requested on a client handle. It shows up when the user requests a list, and when a plugin restarts the currently active list request. yes it's very similar to the other list one, they're siblings, let them live π
β οΈ no function defined? then none of the plugin callbacks associated with the list will be called. it's giving all-or-nothing π
Parameters
pluginβ the plugin which is being notified πplugin_specificβ plugin-specific data πhandleβ the handle associated with the list operation β¨urlβ the url of the list operation πΈattrβ the attributes to be used during this transfer πrestartβGLOBUS_TRUEwhen a plugin is restarting the current list transfer, otherwiseGLOBUS_FALSEπ
globus_ftp_client_plugin_write_t
typedef void(* globus_ftp_client_plugin_write_t) (globus_ftp_client_plugin_t *plugin,
void *plugin_specific,
globus_ftp_client_handle_t *handle,
const globus_byte_t *buffer,
globus_size_t buffer_length,
globus_off_t offset,
globus_bool_t eof)
Plugin write registration callback. βοΈπ₯
This one tells a plugin that the client API has registered a buffer with the FTP control API for writing while it's processing a put. it's the hey, we're about to write this heads-up πΈ
Parameters
pluginβ the plugin which is being notified πplugin_specificβ plugin-specific data πhandleβ the handle associated with the request β¨bufferβ the buffer which is being written π¦buffer_lengthβ the amount of data in the buffer πoffsetβ the offset within the file where the buffer is to be written π―eofβGLOBUS_TRUEif this is the last data buffer to be sent for this put request π
globus_i_ftp_client_plugin_t
typedef struct globus_i_ftp_client_plugin_t globus_i_ftp_client_plugin_t
FTP Client Plugin. π
Every plugin implementation is supposed to define a method for initializing one of these structures. And you've got options, bestie: plugins may be implemented as either a static function table, or as a specialized plugin with plugin-specific attributes. pick your fighter π
Each plugin function may be either GLOBUS_NULL or a valid function pointer. And if the function is GLOBUS_NULL, then the plugin will not be notified when the corresponding event happens. simple as that π«Ά
Enumeration Type Documentation π’
enum globus_ftp_client_plugin_command_mask_t
Command Mask. π
This enumeration is literally just the list of command types that a plugin is interested in. choose your faves β¨
Enumerator
GLOBUS_FTP_CLIENT_CMD_MASK_CONTROL_ESTABLISHMENTβ connect, authenticate πGLOBUS_FTP_CLIENT_CMD_MASK_DATA_ESTABLISHMENTβ PASV, PORT, SPOR, SPAS π‘GLOBUS_FTP_CLIENT_CMD_MASK_TRANSFER_PARAMETERSβ MODE, TYPE, STRU, OPTS RETR, DCAU βοΈGLOBUS_FTP_CLIENT_CMD_MASK_TRANSFER_MODIFIERSβ ALLO, REST ποΈGLOBUS_FTP_CLIENT_CMD_MASK_FILE_ACTIONSβ STOR, RETR, ESTO, ERET, APPE, LIST, NLST, MLSD, MLSR, GET, PUT πGLOBUS_FTP_CLIENT_CMD_MASK_INFORMATIONβ HELP, SITE HELP, FEAT, STAT, SYST, SIZE βΉοΈGLOBUS_FTP_CLIENT_CMD_MASK_MISCβ SITE, NOOP πGLOBUS_FTP_CLIENT_CMD_MASK_BUFFERβ SBUF, ABUF π§ΊGLOBUS_FTP_CLIENT_CMD_MASK_ALLβ All possible commands ππ (the whole menu, no crumbs)
Function Documentation π οΈ
globus_ftp_client_plugin_abort
globus_result_t globus_ftp_client_plugin_abort (globus_ftp_client_handle_t * handle)
Abort a transfer operation. π
This function will cause the currently executing transfer operation to be aborted. And when that happens, the order of operations is very specific, bestie, so listen up π:
- all plugins get notified via their abort callbacks π
- once those are processed, the complete callback gets called for all plugins π«Ά
- and then it's called for the user's callback β¨
The complete callback will indicate that the transfer did not complete successfully. it's giving sad ending but at least everybody knows π
Parameters
handleβ the handle which is associated with the transfer β¨
globus_ftp_client_plugin_add_data_channels
globus_result_t globus_ftp_client_plugin_add_data_channels (globus_ftp_client_handle_t * handle,
unsigned int num_channels,
unsigned int stripe)
Add data channels to an existing put transfer. βπ‘
This function will cause the currently executing transfer operation to have additional data channels acquired β but only if the attribute set allows it. so like, only with permission, we're not rude π
Parameters
handleβ the handle which is associated with the transfer β¨num_channelsβ the number of channels to add to the transfer π’stripeβ the stripe number to have the channels added to π―
Note β Do the plugins need to be notified when this happens? π« (the docs literally left this as an open question, we're just passing the vibe along)
globus_ftp_client_plugin_remove_data_channels
globus_result_t globus_ftp_client_plugin_remove_data_channels (globus_ftp_client_handle_t * handle,
unsigned int num_channels,
unsigned int stripe)
Remove data channels from an existing put transfer. βπ‘
This function will cause the currently executing transfer operation to have data channels removed β again, only if the attribute set allows it. consent is key π
Parameters
handleβ the handle which is associated with the transfer β¨num_channelsβ the number of channels to remove from the transfer π’stripeβ the stripe number to have the channels removed from π―
Note β Do the plugins need to be notified when this happens? π« (same existential question as its sibling, love that for us)
π globus_result_t globus_ftp_client_plugin_restart_chgrp
globus_result_t globus_ftp_client_plugin_restart_chgrp
(globus_ftp_client_handle_t * handle, const char * url, const char *
group, const globus_ftp_client_operationattr_t * attr, const
globus_abstime_t * when)
Restart an existing chgrp. π
okay so this one literally makes the chgrp operation that's running right now get restarted. And when a restart happens, the operation gets silently aborted β like, no drama, no warning β and then restarted with potentially a new url and new attributes. Any data buffers that are currently queued get cleared out and reused once the connection is re-established. β¨
Heads up bestie: the user will not receive any notification that a restart has happened. None. Zero. Silent. π
Every plugin that's interested in chgrp events will get a chgrp callback with the restart boolean set to GLOBUS_TRUE.
Parameters
handleβ the handle that's associated with the chgrp.urlβ the destination URL of the transfer. This may be different than the original chgrp's URL, if the plugin decides to redirect to another FTP server due to performance or reliability problems with the original URL.groupβ the group name or ID to change the file to.attrβ the attributes to use for the new transfer. This may be a modified version of the original chgrp's attribute set.whenβ absolute time for when to restart the chgrp. The current control and data connections will be stopped immediately. If this completes beforewhen, then the restart will be delayed until that time. Otherwise, it will be immediately restarted.
πΈ globus_result_t globus_ftp_client_plugin_restart_chmod
globus_result_t globus_ftp_client_plugin_restart_chmod
(globus_ftp_client_handle_t * handle, const char * url, int mode, const
globus_ftp_client_operationattr_t * attr, const globus_abstime_t * when)
Restart an existing chmod. π
This function will cause the currently executing chmod operation to be restarted. When a restart happens, the operation will be silently aborted, and then restarted with potentially a new URL and attributes. Any data buffers which are currently queued will be cleared and reused once the connection is re-established. π¦
The user will not receive any notification that a restart has happened. Each plugin which is interested in chmod events will receive a chmod callback with the restart boolean set to GLOBUS_TRUE.
Parameters
handleβ the handle which is associated with the chmod.urlβ the destination URL of the transfer. This may be different than the original chmod's URL, if the plugin decides to redirect to another FTP server due to performance or reliability problems with the original URL.modeβ the file mode that will be applied. Must be an octal number representing the bit pattern for the new permissions.attrβ the attributes to use for the new transfer. This may be a modified version of the original chmod's attribute set.whenβ absolute time for when to restart the chmod. The current control and data connections will be stopped immediately. If this completes beforewhen, then the restart will be delayed until that time. Otherwise, it will be immediately restarted.
π globus_result_t globus_ftp_client_plugin_restart_cksm
globus_result_t globus_ftp_client_plugin_restart_cksm
(globus_ftp_client_handle_t * handle, const char * url, globus_off_t
offset, globus_off_t length, const char * algorithm, const
globus_ftp_client_operationattr_t * attr, const globus_abstime_t * when)
Restart an existing cksm. π
This function will cause the currently executing cksm operation to be restarted. When a restart happens, the operation will be silently aborted, and then restarted with potentially a new URL and attributes. Any data buffers which are currently queued will be cleared and reused once the connection is re-established. β¨
The user will not receive any notification that a restart has happened. Each plugin which is interested in cksm events will receive a cksm callback with the restart boolean set to GLOBUS_TRUE.
Parameters
handleβ the handle which is associated with the cksm.urlβ the destination URL of the transfer. This may be different than the original cksm's URL, if the plugin decides to redirect to another FTP server due to performance or reliability problems with the original URL.offsetβ file offset to start calculating checksum.lengthβ length of data to read from the starting offset. Use-1to read the entire file.algorithmβ a pointer to a string to be filled with the checksum of the file. On error the value pointed to by it is undefined.attrβ the attributes to use for the new transfer. This may be a modified version of the original cksm's attribute set.whenβ absolute time for when to restart the cksm. The current control and data connections will be stopped immediately. If this completes beforewhen, then the restart will be delayed until that time. Otherwise, it will be immediately restarted.
π globus_result_t globus_ftp_client_plugin_restart_delete
globus_result_t globus_ftp_client_plugin_restart_delete
(globus_ftp_client_handle_t * handle, const char * url, const
globus_ftp_client_operationattr_t * attr, const globus_abstime_t * when)
Restart an existing delete. π
This function will cause the currently executing delete operation to be restarted. When a restart happens, the operation will be silently aborted, and then restarted with potentially a new URL and attributes. Any data buffers which are currently queued will be cleared and reused once the connection is re-established. π
The user will not receive any notification that a restart has happened. Each plugin which is interested in delete events will receive a delete callback with the restart boolean set to GLOBUS_TRUE.
Parameters
handleβ the handle which is associated with the delete.urlβ the destination URL of the transfer. This may be different than the original delete's URL, if the plugin decides to redirect to another FTP server due to performance or reliability problems with the original URL.attrβ the attributes to use for the new transfer. This may be a modified version of the original delete's attribute set.whenβ absolute time for when to restart the delete. The current control and data connections will be stopped immediately. If this completes beforewhen, then the restart will be delayed until that time. Otherwise, it will be immediately restarted.
π¦ globus_result_t globus_ftp_client_plugin_restart_feat
globus_result_t globus_ftp_client_plugin_restart_feat
(globus_ftp_client_handle_t * handle, const char * url, const
globus_ftp_client_operationattr_t * attr, const globus_abstime_t * when)
Restart an existing feat. π
This function will cause the currently executing feat operation to be restarted. When a restart happens, the operation will be silently aborted, and then restarted with potentially a new URL and attributes. Any data buffers which are currently queued will be cleared and reused once the connection is re-established. β
The user will not receive any notification that a restart has happened. Each plugin which is interested in feat events will receive a feat callback with the restart boolean set to GLOBUS_TRUE.
Parameters
handleβ the handle which is associated with the feat.urlβ the destination URL of the transfer. This may be different than the original feat's URL, if the plugin decides to redirect to another FTP server due to performance or reliability problems with the original URL.attrβ the attributes to use for the new transfer. This may be a modified version of the original feat's attribute set.whenβ absolute time for when to restart the feat. The current control and data connections will be stopped immediately. If this completes beforewhen, then the restart will be delayed until that time. Otherwise, it will be immediately restarted.
π globus_result_t globus_ftp_client_plugin_restart_get
globus_result_t globus_ftp_client_plugin_restart_get
(globus_ftp_client_handle_t * handle, const char * url, const
globus_ftp_client_operationattr_t * attr,
globus_ftp_client_restart_marker_t * restart_marker, const
globus_abstime_t * when)
Restart an existing get. π
This function will cause the currently executing transfer operation to be restarted. When a restart happens, the operation will be silently aborted, and then restarted with potentially a new URL and attributes. Any data buffers which are currently queued will be cleared and reused once the connection is re-established. π
The user will not receive any notification that a restart has happened. Each plugin which is interested in get events will receive a get callback with the restart boolean set to GLOBUS_TRUE.
Parameters
handleβ the handle which is associated with the get.urlβ the source URL of the transfer. This may be different than the original get's URL, if the plugin decides to redirect to another FTP server due to performance or reliability problems with the original URL.attrβ the attributes to use for the new transfer. This may be a modified version of the original get's attribute set. This may be useful when the plugin wishes to send restart markers to the FTP server to prevent re-sending the data which has already been sent.restart_markerβ plugin-provided restart marker for resuming at a non-default restart point. This may be used to implement a persistent restart across process invocations. The default behavior if this isNULLis to use any restart information which has been received by the ftp client library while processing this operation when restarted.whenβ absolute time for when to restart the get. The current control and data connections will be stopped immediately. If this completes beforewhen, then the restart will be delayed until that time. Otherwise, it will be immediately restarted.
β¨ globus_result_t globus_ftp_client_plugin_restart_get_marker
globus_result_t globus_ftp_client_plugin_restart_get_marker
(globus_ftp_client_handle_t * handle, globus_ftp_client_restart_marker_t
* marker)
Get restart marker π―
This function will allow this user to get the restart marker associated with a restarted file transfer. This function may only be called within the get, put, or third party transfer callback in which the 'restart' argument is GLOBUS_TRUE β like, that's the whole rule, no exceptions bestie. π
Parameters
handleβ the handle which is associated with the transfer.markerβ pointer to an uninitialized restart marker type.
Returns
- Error on
NULLhandle or marker - Error on invalid use of function
GLOBUS_SUCCESS(marker will be populated)
π§ globus_result_t globus_ftp_client_plugin_restart_list
globus_result_t globus_ftp_client_plugin_restart_list
(globus_ftp_client_handle_t * handle, const char * url, const
globus_ftp_client_operationattr_t * attr, const globus_abstime_t * when)
Restart an existing list. π
Parameters
handleβ the handle that's holding this list, bestie π«Άurlβ the destination URL of the transfer. Ok so this can literally be different from the original list's URL, if the plugin is like "mm no" and decides to redirect to another FTP server because the original one is giving performance or reliability problems πattrβ the attributes to use for the new transfer. Could be a modified version of the original list's attribute set, no biggie πwhenβ the absolute time for when to restart the list. The current control and data connections get stopped immediately. If that finishes before when, then the restart is delayed until that time. Otherwise? It restarts immediately, periodt β‘
β¨ globus_result_t globus_ftp_client_plugin_restart_machine_list β¨
globus_result_t globus_ftp_client_plugin_restart_machine_list
(globus_ftp_client_handle_t * handle, const char * url, const
globus_ftp_client_operationattr_t * attr, const globus_abstime_t * when)
Restart an existing machine list. π
This function makes the currently executing transfer operation restart. When a restart happens, the operation gets silently aborted, and then restarted with potentially a new URL and attributes. Any data buffers currently queued get cleared and reused once the connection is re-established π¦
The user gets no notification that a restart happened β like, none. Every plugin that's interested in list events will receive a list callback with the restart boolean set to GLOBUS_TRUE π«
Parameters
handleβ the handle that's associated with the listurlβ the destination URL of the transfer. May be different from the original list's URL, if the plugin decides to redirect to another FTP server due to performance or reliability problems with the original URL πattrβ the attributes to use for the new transfer. May be a modified version of the original list's attribute setwhenβ absolute time for when to restart the list. The current control and data connections are stopped immediately. If this completes before when, the restart is delayed until that time. Otherwise it's immediately restarted β°
πΈ globus_result_t globus_ftp_client_plugin_restart_mkdir πΈ
globus_result_t globus_ftp_client_plugin_restart_mkdir
(globus_ftp_client_handle_t * handle, const char * url, const
globus_ftp_client_operationattr_t * attr, const globus_abstime_t * when)
Restart an existing mkdir. π
This function makes the currently executing operation restart. When a restart happens, the operation is silently aborted, and then restarted with potentially a new URL and attributes. Any data buffers currently queued get cleared and reused once the connection is re-established β¨
The user gets no notification that a restart happened. Every plugin interested in mkdir events will receive a mkdir callback with the restart boolean set to GLOBUS_TRUE π
Parameters
handleβ the handle that's associated with the mkdirurlβ the destination URL of the transfer. May be different from the original mkdir's URL, if the plugin decides to redirect to another FTP server due to performance or reliability problems with the original URLattrβ the attributes to use for the new transfer. May be a modified version of the original mkdir's attribute setwhenβ absolute time for when to restart the mkdir. The current control and data connections are stopped immediately. If this completes before when, the restart is delayed until that time. Otherwise it's immediately restarted π
π¦ globus_result_t globus_ftp_client_plugin_restart_mlst π¦
globus_result_t globus_ftp_client_plugin_restart_mlst
(globus_ftp_client_handle_t * handle, const char * url, const
globus_ftp_client_operationattr_t * attr, const globus_abstime_t * when)
Restart an existing MLST. β
This function makes the currently executing transfer operation restart. When a restart happens, the operation is silently aborted, and then restarted with potentially a new URL and attributes. Any data buffers currently queued get cleared and reused once the connection is re-established π
The user gets no notification that a restart happened. Every plugin interested in list events will receive a list callback with the restart boolean set to GLOBUS_TRUE π
Parameters
handleβ the handle that's associated with the listurlβ the destination URL of the transfer. May be different from the original list's URL, if the plugin decides to redirect to another FTP server due to performance or reliability problems with the original URLattrβ the attributes to use for the new transfer. May be a modified version of the original list's attribute setwhenβ absolute time for when to restart the list. The current control and data connections are stopped immediately. If this completes before when, the restart is delayed until that time. Otherwise it's immediately restarted β
π globus_result_t globus_ftp_client_plugin_restart_modification_time π
globus_result_t globus_ftp_client_plugin_restart_modification_time
(globus_ftp_client_handle_t * handle, const char * url, const
globus_ftp_client_operationattr_t * attr, const globus_abstime_t * when)
Restart a modification time check operation. π°οΈ
This function makes the currently executing modification time check operation restart. When a restart happens, the operation is silently aborted, and then restarted with potentially a new URL and attributes.
Heads up bestie: this one does not mention any data buffers being cleared and reused β the original says it, so I'm saying it. No invented lore here π
The user gets no notification that a restart happened. Every plugin interested in modification time operations will receive a modification time callback with the restart boolean set to GLOBUS_TRUE β¨
Parameters
handleβ the handle that's associated with the operationurlβ the source URL of the modification time check. May be different from the original operations URL, if the plugin decides to redirect to another FTP server due to performance or reliability problems with the original URLattrβ the attributes to use for the new operation. May be a modified version of the original operations's attribute setwhenβ absolute time for when to restart the modification time check. The current control and data connections are stopped immediately. If this completes before when, the restart is delayed until that time. Otherwise it's immediately restarted β³
π§ globus_result_t globus_ftp_client_plugin_restart_move π§
globus_result_t globus_ftp_client_plugin_restart_move
(globus_ftp_client_handle_t * handle, const char * source_url, const
char * dest_url, const globus_ftp_client_operationattr_t * attr, const
globus_abstime_t * when)
Restart an existing move. π
This function makes the currently executing move operation restart. When a restart happens, the operation is silently aborted, and then restarted with potentially new URLs and attributes. (Yes, plural URLs, this one has two π―)
The user gets no notification that a restart happened. Every plugin interested in get events will receive a move callback with the restart boolean set to GLOBUS_TRUE π«
Parameters
handleβ the handle that's associated with the movesource_urlβ the source URL of the move. May be different from the original get's URL, if the plugin decides to redirect to another FTP server due to performance or reliability problems with the original URLdest_urlβ the destination URL of the move. May be different from the original get's URL, if the plugin decides to redirect to another FTP server due to performance or reliability problems with the original URL. Note that only the path component of this URL is used. πattrβ the attributes to use for the new transfer. May be a modified version of the original move's attribute set. This may be useful when the plugin wishes to send restart markers to the FTP server to prevent re-sending the data which has already been sent πwhenβ absolute time for when to restart the move. The current control and data connections are stopped immediately. If this completes before when, the restart is delayed until that time. Otherwise it's immediately restarted π
π globus_result_t globus_ftp_client_plugin_restart_put π
globus_result_t globus_ftp_client_plugin_restart_put
(globus_ftp_client_handle_t * handle, const char * url, const
globus_ftp_client_operationattr_t * attr,
globus_ftp_client_restart_marker_t * restart_marker, const
globus_abstime_t * when)
Restart an existing put. π
This function makes the currently executing transfer operation restart. When a restart happens, the operation is silently aborted, and then restarted with potentially a new URL and attributes. Any data buffers currently queued but not called back will be resent once the connection is re-established π
Not me noticing this one has a whole extra param, restart_marker, that the others don't π it's in the signature, it's real, it's iconic.
The user gets no notification that a restart happened. Every plugin interested in get events will receive a put callback with the restart boolean set to GLOBUS_TRUE π
π Parameters π
handleβ the handle that's riding with this put π«Άurlβ the URL of the transfer. Lowkey it can be different from the original put's URL, if the plugin decides to redirect to another FTP server because the original one is giving performance or reliability problems π If the put gets restarted with a different URL, the plugin must re-send any data that its callback has already acknowledged. No cap.attrβ the attributes to use for the new transfer. This can be a modified version of the original put's attribute set β¨ Which is super handy when the plugin wants to send restart markers to the FTP server so it doesn't re-send data that's already been sent. Iconic.restart_markerβ a plugin-provided restart marker for resuming at a non-default restart point. Use this if you want a persistent restart that survives across process invocations π The default behavior when this isNULLis to use whatever restart info the ftp client library received while processing this operation, when it gets restarted.whenβ absolute time for when to restart the put β° The current control and data connections get stopped immediately. If this completes before when, then the restart is delayed until that time. Otherwise, it restarts immediately.
globus_result_t globus_ftp_client_plugin_restart_recursive_list (globus_ftp_client_handle_t * handle, const char * url, const globus_ftp_client_operationattr_t * attr, const globus_abstime_t * when)
Restart an existing recursive list. π¦
This function will cause the currently executing transfer operation to be restarted. When a restart happens, the operation gets silently aborted, and then restarted with potentially a new URL and attributes. Any data buffers that are currently queued get cleared and reused once the connection is re-established.
The user will not receive any notification that a restart has happened π Each plugin that's interested in list events will receive a list callback with the restart boolean set to GLOBUS_TRUE.
Parameters
handleβ the handle that's associated with the listurlβ the destination URL of the transfer. This may be different than the original list's URL, if the plugin decides to redirect to another FTP server due to performance or reliability problems with the original URL.attrβ the attributes to use for the new transfer. This may be a modified version of the original list's attribute set.whenβ absolute time for when to restart the list. The current control and data connections will be stopped immediately. If this completes before when, then the restart will be delayed until that time. Otherwise, it will be immediately restarted.
globus_result_t globus_ftp_client_plugin_restart_rmdir (globus_ftp_client_handle_t * handle, const char * url, const globus_ftp_client_operationattr_t * attr, const globus_abstime_t * when)
Restart an existing rmdir. π
This function will cause the currently executing operation to be restarted. When a restart happens, the operation gets silently aborted, and then restarted with potentially a new URL and attributes. Any data buffers that are currently queued will be cleared and reused once the connection is re-established.
The user will not receive any notification that a restart has happened π Each plugin that's interested in rmdir events will receive a rmdir callback with the restart boolean set to GLOBUS_TRUE.
Parameters
handleβ the handle that's associated with the rmdirurlβ the destination URL of the transfer. This may be different than the original rmdir's URL, if the plugin decides to redirect to another FTP server due to performance or reliability problems with the original URL.attrβ the attributes to use for the new transfer. This may be a modified version of the original rmdir's attribute set.whenβ absolute time for when to restart the rmdir. The current control and data connections will be stopped immediately. If this completes before when, then the restart will be delayed until that time. Otherwise, it will be immediately restarted.
globus_result_t globus_ftp_client_plugin_restart_size (globus_ftp_client_handle_t * handle, const char * url, const globus_ftp_client_operationattr_t * attr, const globus_abstime_t * when)
Restart a size check operation. πΈ
This function will cause the currently executing size check operation to be restarted. When a restart happens, the operation gets silently aborted, and then restarted with potentially a new URL and attributes.
The user will not receive any notification that a restart has happened π Each plugin that's interested in size operations will receive a size callback with the restart boolean set to GLOBUS_TRUE.
Parameters
handleβ the handle that's associated with the operationurlβ the source URL of the size check. This may be different than the original operation's URL, if the plugin decides to redirect to another FTP server due to performance or reliability problems with the original URL.attrβ the attributes to use for the new operation. This may be a modified version of the original operation's attribute set.whenβ absolute time for when to restart the size check. The current control and data connections will be stopped immediately. If this completes before when, then the restart will be delayed until that time. Otherwise, it will be immediately restarted.
globus_result_t globus_ftp_client_plugin_restart_stat (globus_ftp_client_handle_t * handle, const char * url, const globus_ftp_client_operationattr_t * attr, const globus_abstime_t * when)
Restart an existing STAT. β
This function will cause the currently executing transfer operation to be restarted. When a restart happens, the operation gets silently aborted, and then restarted with potentially a new URL and attributes. Any data buffers that are currently queued will be cleared and reused once the connection is re-established.
The user will not receive any notification that a restart has happened π Each plugin that's interested in list events will receive a list callback with the restart boolean set to GLOBUS_TRUE.
Parameters
handleβ the handle that's associated with the listurlβ the destination URL of the transfer. This may be different than the original list's URL, if the plugin decides to redirect to another FTP server due to performance or reliability problems with the original URL.attrβ the attributes to use for the new transfer. This may be a modified version of the original list's attribute set.whenβ absolute time for when to restart the list. The current control and data connections will be stopped immediately. If this completes before when, then the restart will be delayed until that time. Otherwise, it will be immediately restarted.
globus_result_t globus_ftp_client_plugin_restart_symlink (globus_ftp_client_handle_t * handle, const char * url, const char * link_url, const globus_ftp_client_operationattr_t * attr, const globus_abstime_t * when)
Restart an existing symlink. π§
This function will cause the currently executing symlink operation to be restarted. When a restart happens, the operation gets silently aborted, and then restarted with potentially a new URL and attributes. Any data buffers that are currently queued will be cleared and reused once the connection is re-established.
The user will not receive any notification that a restart has happened π Each plugin that's interested in chgrp events will receive a chgrp callback with the restart boolean set to GLOBUS_TRUE.
Parameters
handleβ the handle that's associated with the chgrpurlβ the destination URL of the transfer. This may be different than the original symlink's URL, if the plugin decides to redirect to another FTP server due to performance or reliability problems with the original URL.link_urlβ the URL to symbolically link the file toattrβ the attributes to use for the new transfer. This may be a modified version of the original symlink's attribute set.whenβ absolute time for when to restart the symlink. The current control and data connections will be stopped immediately. If this completes before when, then the restart will be delayed until that time. Otherwise, it will be immediately restarted.
globus_result_t globus_ftp_client_plugin_restart_third_party_transfer (globus_ftp_client_handle_t * handle, const char * source_url, const globus_ftp_client_operationattr_t * source_attr, const char * dest_url, const globus_ftp_client_operationattr_t * dest_attr, globus_ftp_client_restart_marker_t * restart_marker, const globus_abstime_t * when)
Restart an existing third-party transfer. π₯
This function will cause the currently executing transfer operation to be restarted. When a restart happens, the operation gets silently aborted, and then restarted with potentially a new URLs and attributes.
The user will not receive any notification that a restart has happened π Each plugin that's interested in third-party transfer events will receive a transfer callback with the restart boolean set to GLOBUS_TRUE.
β¨ Parameters β¨
handleβ the handle which is associated with the transfer. π«Άsource_urlβ the source URL of the transfer. This may be different than the original URL, if the plugin decides to redirect to another FTP server due to performance or reliability problems with the original URL.source_attrβ the attributes to use for the new transfer. This may be a modified version of the original transfer's attribute set. This may be useful when the plugin wishes to send restart markers to the FTP server to prevent re-sending the data which has already been sent.dest_urlβ the destination URL of the transfer. This may be different than the original destination URL, if the plugin decides to redirect to another FTP server due to performance or reliability problems with the original URL.dest_attrβ the attributes to use for the new transfer. This may be a modified version of the original transfer's attribute set. This may be useful when the plugin wishes to send restart markers to the FTP server to prevent re-sending the data which has already been sent.restart_markerβ Plugin-provided restart marker for resuming at a non-default restart point. This may be used to implement a persistent restart across process invocations. The default behavior if this isNULLis to use any restart information which has been received by the ftp client library while processing this operation when restarted.whenβ Absolute time for when to restart the transfer. The current control and data connections will be stopped immediately. If this completes before when, then the restart will be delayed until that time. Otherwise, it will be immediately restarted.
globus_result_t globus_ftp_client_plugin_restart_utime
globus_result_t globus_ftp_client_plugin_restart_utime
(globus_ftp_client_handle_t * handle, const char * url, const struct tm
* utime_time, const globus_ftp_client_operationattr_t * attr, const
globus_abstime_t * when)
Restart an existing utime. β¨
This function will cause the currently executing utime operation to be restarted. When a restart happens, the operation will be silently aborted, and then restarted with potentially a new URL and attributes. Any data buffers which are currently queued will be cleared and reused once the connection is re-established.
The user will not receive any notification that a restart has happened. Each plugin which is interested in utime events will receive a utime callback with the restart boolean set to GLOBUS_TRUE.
Parameters π
handleβ the handle which is associated with the chgrp. (yes bestie, it sayschgrp, we're just the messengers π)urlβ the destination URL of the transfer. This may be different than the original utime's URL, if the plugin decides to redirect to another FTP server due to performance or reliability problems with the original URL.utime_timeβ the time value to change the file to.attrβ the attributes to use for the new transfer. This may be a modified version of the original utime's attribute set.whenβ Absolute time for when to restart the utime. The current control and data connections will be stopped immediately. If this completes before when, then the restart will be delayed until that time. Otherwise, it will be immediately restarted.
globus_result_t globus_ftp_client_plugin_restart_verbose_list
globus_result_t globus_ftp_client_plugin_restart_verbose_list
(globus_ftp_client_handle_t * handle, const char * url, const
globus_ftp_client_operationattr_t * attr, const globus_abstime_t * when)
Restart an existing verbose list. πΈ
This function will cause the currently executing transfer operation to be restarted. When a restart happens, the operation will be silently aborted, and then restarted with potentially a new URL and attributes. Any data buffers which are currently queued will be cleared and reused once the connection is re-established.
The user will not receive any notification that a restart has happened. Each plugin which is interested in list events will receive a list callback with the restart boolean set to GLOBUS_TRUE.
Parameters π
handleβ the handle which is associated with the list.urlβ the destination URL of the transfer. This may be different than the original list's URL, if the plugin decides to redirect to another FTP server due to performance or reliability problems with the original URL.attrβ the attributes to use for the new transfer. This may be a modified version of the original list's attribute set.whenβ Absolute time for when to restart the list. The current control and data connections will be stopped immediately. If this completes before when, then the restart will be delayed until that time. Otherwise, it will be immediately restarted.
β¨ Author β¨
Generated automatically by Doxygen for globus_ftp_client from the source code. π€π
That's the whole page, bestie. This iconic manual is fromglobus_ftp_client, Version 9.9, and it'sglobus_ftp...ent_plugins(3)β no cap, periodt. πβ¨
π¦ where this page comes from
- 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