Collaboration diagram for Restart Plugin:
![]() |
Other plugins may be developed to provide other methods of reliability.
The specific functionality of this plugin is to restart any FTP operation when a fault occurs. The plugin's operation is parameterized to control how often and when to attempt to restart the operation.
This restart plugin will restart an FTP operation if a noticable fault has occurred---a connection timing out, a failure by the server to process a command, a protocol error, an authentication error.
This plugin has three user-configurable parameters; these are the maximum number of retries to attempt, the interval to wait between retries, and the deadline after which no further retries will be attempted. These are set by initializing a restart plugin instance with the function globus_ftp_client_restart_plugin_init().
The following example illustrates a typical use of the restart plugin. In this case, we configure a plugin instance to restart the operation for up to an hour, using an exponential back-off between retries.
#include "globus_ftp_client.h" #include "globus_ftp_client_restart_plugin.h" #include "globus_time.h" int main(int argc, char *argv[]) { globus_ftp_client_plugin_t restart_plugin; globus_ftp_client_handleattr_t handleattr; globus_ftp_client_handle_t handle; globus_abstime_t deadline; globus_module_activate(GLOBUS_FTP_CLIENT_MODULE); globus_module_activate(GLOBUS_FTP_CLIENT_RESTART_PLUGIN_MODULE); /* Set a deadline to be now + 1 hour */ GlobusAbstimeSet(deadline, 60 * 60, 0); /* initialize a plugin with this deadline */ globus_ftp_client_restart_plugin_init( &restart_plugin, 0, /* # retry limit (0 means don't limit) */ GLOBUS_NULL, /* interval between retries--null means * exponential backoff */ &deadline); /* Set up our handle to use the new plugin */ globus_ftp_client_handleattr_init(&handleattr); globus_ftp_client_handleattr_add_plugin(&handleattr, &restart_plugin); globus_ftp_client_handle_init(&handle, &handleattr); /* * Now, if a fault occurs processing this get, the plugin will restart * it with an exponential back-off, and will bail if a fault occurs * after 1 hour of retrying */ globus_ftp_client_get(&handle, "ftp://ftp.globus.org/pub/globus/README", GLOBUS_NULL, GLOBUS_NULL, callback_fn, GLOBUS_NULL); }
|
Module descriptor.
|
|
Initialize an instance of the GridFTP restart plugin This function will initialize the plugin-specific instance data for this plugin, and will make the plugin usable for ftp client handle attribute and handle creation.
|
|
Destroy an instance of the GridFTP restart plugin This function will free all restart plugin-specific instance data from this plugin, and will make the plugin unusable for further ftp handle creation. Existing FTP client handles and handle attributes will not be affected by destroying a plugin associated with them, as a local copy of the plugin is made upon handle initialization.
|
about globus |
globus toolkit |
dev.globus
Comments? webmaster@globus.org