Man Linux: Main Page and Category List

NAME

       Restart Plugin -

       The restart plugin implements one scheme for providing reliability
       functionality for the FTP Client library.

   Defines
       #define GLOBUS_FTP_CLIENT_RESTART_PLUGIN_MODULE
           (&globus_i_ftp_client_restart_plugin_module)

   Functions
       globus_result_t globus_ftp_client_restart_plugin_init
           (globus_ftp_client_plugin_t *plugin, int max_retries,
           globus_reltime_t *interval, globus_abstime_t *deadline)
       globus_result_t globus_ftp_client_restart_plugin_destroy
           (globus_ftp_client_plugin_t *plugin)

Detailed Description

       The restart plugin implements one scheme for providing reliability
       functionality for the FTP Client library.

       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 noticeable 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().

   Example Usage
       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);
       }

Define Documentation

   #define GLOBUS_FTP_CLIENT_RESTART_PLUGIN_MODULE
       (&globus_i_ftp_client_restart_plugin_module)
       Module descriptor.

Function Documentation

   globus_result_t globus_ftp_client_restart_plugin_init
       (globus_ftp_client_plugin_t * plugin, int max_retries, globus_reltime_t
       * interval, globus_abstime_t * deadline)
       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. Parameters:
           plugin A pointer to an uninitialized plugin. The plugin will be
           configured as a restart plugin.
           max_retries The maximum number of times to retry the operation
           before giving up on the transfer. If this value is less than or
           equal to 0, then the restart plugin will keep trying to restart the
           operation until it completes or the deadline is reached with an
           unsuccessful operation.
           interval The interval to wait after a failures before retrying the
           transfer. If the interval is 0 seconds or GLOBUS_NULL, then an
           exponential backoff will be used.
           deadline An absolute timeout. If the deadline is GLOBUS_NULL then
           the retry will never timeout.

       Returns:
           This function returns an error if

           · plugin is null

       See also:
           globus_ftp_client_restart_plugin_destroy(),
           globus_ftp_client_handleattr_add_plugin(),
           globus_ftp_client_handleattr_remove_plugin(),
           globus_ftp_client_handle_init()

   globus_result_t globus_ftp_client_restart_plugin_destroy
       (globus_ftp_client_plugin_t * plugin)
       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.

       Parameters:
           plugin A pointer to a GridFTP restart plugin, previously
           initialized by calling globus_ftp_client_restart_plugin_init()

       Returns:
           This function returns an error if

           · plugin is null

           · plugin is not a restart plugin

       See also:
           globus_ftp_client_restart_plugin_init(),
           globus_ftp_client_handleattr_add_plugin(),
           globus_ftp_client_handleattr_remove_plugin(),
           globus_ftp_client_handle_init()

Author

       Generated automatically by Doxygen for globus ftp client from the
       source code.