<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><meta name="robots" content="noindex"> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <!-- THIS FILE IS AUTOMATICALLY GENERATED FROM THE GLOBUS SOURCE CODE DO NOT MODIFY. --> <title>Globus Reference Manual</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head> <body> <!-- Generated by Doxygen 1.8.1.1 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> </ul> </div> </div><!-- top --> <div id="side-nav" class="ui-resizable side-nav-resizable"> <div id="nav-tree"> <div id="nav-tree-contents"> </div> </div> <div id="splitbar" style="-moz-user-select:none;" class="ui-resizable-handle"> </div> </div> <script type="text/javascript"> $(document).ready(function(){initNavTree('group__globus__ftp__client__throughput__plugin.html','');}); </script> <div id="doc-content"> <div class="header"> <div class="summary"> <a href="#define-members">Macros</a> | <a href="#typedef-members">Typedefs</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">Throughput Performance Plugin</div> </div> <div class="ingroups"><a class="el" href="group__globus__ftp__client__plugins.html">Plugins</a></div></div><!--header--> <div class="contents"> <div class="dynheader"> Collaboration diagram for Throughput Performance Plugin:</div> <div class="dyncontent"> <center><table><tr><td><img src="group__globus__ftp__client__throughput__plugin.png" border="0" alt="" usemap="#group____globus____ftp____client____throughput____plugin"/> <map name="group____globus____ftp____client____throughput____plugin" id="group____globus____ftp____client____throughput____plugin"> <area shape="rect" id="node1" href="group__globus__ftp__client__plugins.html" title="Plugin API." alt="" coords="6,12,71,39"/></map> </td></tr></table></center> </div> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2><a name="define-members"></a> Macros</h2></td></tr> <tr class="memitem:gabd79a3f5b7051bb6b4bee0d8d062d716"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__globus__ftp__client__throughput__plugin.html#gabd79a3f5b7051bb6b4bee0d8d062d716">GLOBUS_FTP_CLIENT_THROUGHPUT_PLUGIN_MODULE</a>   (&globus_i_ftp_client_throughput_plugin_module)</td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2><a name="typedef-members"></a> Typedefs</h2></td></tr> <tr class="memitem:ga635fcdcd8bc88682f974b6258665fa77"><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__globus__ftp__client__throughput__plugin.html#ga635fcdcd8bc88682f974b6258665fa77">globus_ftp_client_throughput_plugin_begin_cb_t</a> )(void *user_specific, <a class="el" href="group__globus__ftp__client__handle.html#ga9d8a98c88d529ab539c2fedee545f172">globus_ftp_client_handle_t</a> *handle, const char *source_url, const char *dest_url)</td></tr> <tr class="memitem:gad3378988c81b09b07a56be73b81d7e39"><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__globus__ftp__client__throughput__plugin.html#gad3378988c81b09b07a56be73b81d7e39">globus_ftp_client_throughput_plugin_stripe_cb_t</a> )(void *user_specific, <a class="el" href="group__globus__ftp__client__handle.html#ga9d8a98c88d529ab539c2fedee545f172">globus_ftp_client_handle_t</a> *handle, int stripe_ndx, globus_off_t bytes, float instantaneous_throughput, float avg_throughput)</td></tr> <tr class="memitem:ga94697ba39253977f5edc0f616baa3f07"><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__globus__ftp__client__throughput__plugin.html#ga94697ba39253977f5edc0f616baa3f07">globus_ftp_client_throughput_plugin_total_cb_t</a> )(void *user_specific, <a class="el" href="group__globus__ftp__client__handle.html#ga9d8a98c88d529ab539c2fedee545f172">globus_ftp_client_handle_t</a> *handle, globus_off_t bytes, float instantaneous_throughput, float avg_throughput)</td></tr> <tr class="memitem:ga41213a4cc3331fdd9ae607ecaeb35122"><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__globus__ftp__client__throughput__plugin.html#ga41213a4cc3331fdd9ae607ecaeb35122">globus_ftp_client_throughput_plugin_complete_cb_t</a> )(void *user_specific, <a class="el" href="group__globus__ftp__client__handle.html#ga9d8a98c88d529ab539c2fedee545f172">globus_ftp_client_handle_t</a> *handle, globus_bool_t success)</td></tr> <tr class="memitem:gaee0d6a6086190474c8c752eeb5f58448"><td class="memItemLeft" align="right" valign="top">typedef void *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__globus__ftp__client__throughput__plugin.html#gaee0d6a6086190474c8c752eeb5f58448">globus_ftp_client_throughput_plugin_user_copy_cb_t</a> )(void *user_specific)</td></tr> <tr class="memitem:gaf580100a8038cf8e54e15f8b5d484a7b"><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__globus__ftp__client__throughput__plugin.html#gaf580100a8038cf8e54e15f8b5d484a7b">globus_ftp_client_throughput_plugin_user_destroy_cb_t</a> )(void *user_specific)</td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:ga4c141499bfd91a76758fa558e6328a7e"><td class="memItemLeft" align="right" valign="top">globus_result_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__globus__ftp__client__throughput__plugin.html#ga4c141499bfd91a76758fa558e6328a7e">globus_ftp_client_throughput_plugin_init</a> (<a class="el" href="group__globus__ftp__client__plugins.html#gafd650bbeee4bf50b94275d89352697dc">globus_ftp_client_plugin_t</a> *plugin, <a class="el" href="group__globus__ftp__client__throughput__plugin.html#ga635fcdcd8bc88682f974b6258665fa77">globus_ftp_client_throughput_plugin_begin_cb_t</a> begin_cb, <a class="el" href="group__globus__ftp__client__throughput__plugin.html#gad3378988c81b09b07a56be73b81d7e39">globus_ftp_client_throughput_plugin_stripe_cb_t</a> per_stripe_cb, <a class="el" href="group__globus__ftp__client__throughput__plugin.html#ga94697ba39253977f5edc0f616baa3f07">globus_ftp_client_throughput_plugin_total_cb_t</a> total_cb, <a class="el" href="group__globus__ftp__client__throughput__plugin.html#ga41213a4cc3331fdd9ae607ecaeb35122">globus_ftp_client_throughput_plugin_complete_cb_t</a> complete_cb, void *user_specific)</td></tr> <tr class="memitem:ga2bac7cad7c25297659548216b1d547d2"><td class="memItemLeft" align="right" valign="top">globus_result_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__globus__ftp__client__throughput__plugin.html#ga2bac7cad7c25297659548216b1d547d2">globus_ftp_client_throughput_plugin_set_copy_destroy</a> (<a class="el" href="group__globus__ftp__client__plugins.html#gafd650bbeee4bf50b94275d89352697dc">globus_ftp_client_plugin_t</a> *plugin, <a class="el" href="group__globus__ftp__client__throughput__plugin.html#gaee0d6a6086190474c8c752eeb5f58448">globus_ftp_client_throughput_plugin_user_copy_cb_t</a> copy_cb, <a class="el" href="group__globus__ftp__client__throughput__plugin.html#gaf580100a8038cf8e54e15f8b5d484a7b">globus_ftp_client_throughput_plugin_user_destroy_cb_t</a> destroy_cb)</td></tr> <tr class="memitem:gac1041b36437cb1401cf0e65c71246d84"><td class="memItemLeft" align="right" valign="top">globus_result_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__globus__ftp__client__throughput__plugin.html#gac1041b36437cb1401cf0e65c71246d84">globus_ftp_client_throughput_plugin_destroy</a> (<a class="el" href="group__globus__ftp__client__plugins.html#gafd650bbeee4bf50b94275d89352697dc">globus_ftp_client_plugin_t</a> *plugin)</td></tr> <tr class="memitem:gaf384442919d57f1420a29ec72fe3fc09"><td class="memItemLeft" align="right" valign="top">globus_result_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__globus__ftp__client__throughput__plugin.html#gaf384442919d57f1420a29ec72fe3fc09">globus_ftp_client_throughput_plugin_get_user_specific</a> (<a class="el" href="group__globus__ftp__client__plugins.html#gafd650bbeee4bf50b94275d89352697dc">globus_ftp_client_plugin_t</a> *plugin, void **user_specific)</td></tr> </table> <hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <p>The FTP Throughput Performance plugin allows the user to obtain calculated performance information for all types of transfers except a third party transfer in which Extended Block mode is not enabled. </p> <p>Note: Since this plugin is built on top of the Performance Marker Plugin, it is not possible to associate both plugins with a handle </p> <hr/><h2>Macro Definition Documentation</h2> <a class="anchor" id="gabd79a3f5b7051bb6b4bee0d8d062d716"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define GLOBUS_FTP_CLIENT_THROUGHPUT_PLUGIN_MODULE   (&globus_i_ftp_client_throughput_plugin_module)</td> </tr> </table> </div><div class="memdoc"> <p>Module descriptor. </p> </div> </div> <hr/><h2>Typedef Documentation</h2> <a class="anchor" id="ga635fcdcd8bc88682f974b6258665fa77"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef void(* globus_ftp_client_throughput_plugin_begin_cb_t)(void *user_specific, <a class="el" href="group__globus__ftp__client__handle.html#ga9d8a98c88d529ab539c2fedee545f172">globus_ftp_client_handle_t</a> *handle, const char *source_url, const char *dest_url)</td> </tr> </table> </div><div class="memdoc"> <p>Transfer begin callbackThis callback will be called when a transfer begins. </p> <dl class="params"><dt>Parameters:</dt><dd> <table class="params"> <tr><td class="paramname">handle</td><td>The client handle associated with this transfer</td></tr> <tr><td class="paramname">user_specific</td><td>User argument passed to globus_ftp_client_throughput_plugin_init</td></tr> <tr><td class="paramname">source_url</td><td>source of the transfer (GLOBUS_NULL if 'put')</td></tr> <tr><td class="paramname">dest_url</td><td>dest of the transfer (GLOBUS_NULL if 'get')</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns:</dt><dd><ul> <li>n/a </li> </ul> </dd></dl> </div> </div> <a class="anchor" id="gad3378988c81b09b07a56be73b81d7e39"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef void(* globus_ftp_client_throughput_plugin_stripe_cb_t)(void *user_specific, <a class="el" href="group__globus__ftp__client__handle.html#ga9d8a98c88d529ab539c2fedee545f172">globus_ftp_client_handle_t</a> *handle, int stripe_ndx, globus_off_t bytes, float instantaneous_throughput, float avg_throughput)</td> </tr> </table> </div><div class="memdoc"> <p>Stripe performace throughput callbackThis callback will be called with every performance callback that is received by the perf plugin. </p> <p>The first callback for each stripe_ndx will have an instantaneous_throughput based from the time the command was sent.</p> <dl class="params"><dt>Parameters:</dt><dd> <table class="params"> <tr><td class="paramname">handle</td><td>The client handle associated with this transfer</td></tr> <tr><td class="paramname">user_specific</td><td>User argument passed to globus_ftp_client_throughput_plugin_init</td></tr> <tr><td class="paramname">bytes</td><td>The total number of bytes received on this stripe</td></tr> <tr><td class="paramname">instantaneous_throughput</td><td>Instanteous throughput on this stripe (bytes / sec)</td></tr> <tr><td class="paramname">avg_throughput</td><td>Average throughput on this stripe (bytes / sec)</td></tr> <tr><td class="paramname">stripe_ndx</td><td>This stripe's index </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="ga94697ba39253977f5edc0f616baa3f07"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef void(* globus_ftp_client_throughput_plugin_total_cb_t)(void *user_specific, <a class="el" href="group__globus__ftp__client__handle.html#ga9d8a98c88d529ab539c2fedee545f172">globus_ftp_client_handle_t</a> *handle, globus_off_t bytes, float instantaneous_throughput, float avg_throughput)</td> </tr> </table> </div><div class="memdoc"> <p>Total performace throughput callbackThis callback will be called with every performance callback that is received by the perf plugin. </p> <p>The first callback for will have an instantaneous_throughput based from the time the command was sent. This callback will be called after the per_stripe_cb</p> <dl class="params"><dt>Parameters:</dt><dd> <table class="params"> <tr><td class="paramname">handle</td><td>The client handle associated with this transfer</td></tr> <tr><td class="paramname">user_specific</td><td>User argument passed to globus_ftp_client_throughput_plugin_init</td></tr> <tr><td class="paramname">bytes</td><td>The total number of bytes received on all stripes</td></tr> <tr><td class="paramname">instantaneous_throughput</td><td>Total instanteous throughput on all stripes (bytes / sec)</td></tr> <tr><td class="paramname">avg_throughput</td><td>Average total throughput on all stripes (bytes / sec) </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="ga41213a4cc3331fdd9ae607ecaeb35122"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef void(* globus_ftp_client_throughput_plugin_complete_cb_t)(void *user_specific, <a class="el" href="group__globus__ftp__client__handle.html#ga9d8a98c88d529ab539c2fedee545f172">globus_ftp_client_handle_t</a> *handle, globus_bool_t success)</td> </tr> </table> </div><div class="memdoc"> <p>Transfer complete callbackThis callback will be called upon transfer completion (successful or otherwise) </p> <dl class="params"><dt>Parameters:</dt><dd> <table class="params"> <tr><td class="paramname">handle</td><td>The client handle associated with this transfer</td></tr> <tr><td class="paramname">user_specific</td><td>User argument passed to globus_ftp_client_throughput_plugin_init</td></tr> <tr><td class="paramname">success</td><td>indicates whether this transfer completed successfully or was interrupted (by error or abort)</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns:</dt><dd><ul> <li>n/a </li> </ul> </dd></dl> </div> </div> <a class="anchor" id="gaee0d6a6086190474c8c752eeb5f58448"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef void*(* globus_ftp_client_throughput_plugin_user_copy_cb_t)(void *user_specific)</td> </tr> </table> </div><div class="memdoc"> <p>Copy constructorThis callback will be called when a copy of this plugin is made, it is intended to allow initialization of a new user_specific data. </p> <dl class="params"><dt>Parameters:</dt><dd> <table class="params"> <tr><td class="paramname">user_specific</td><td>this is user specific data either created by this copy method, or the value passed to init</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns:</dt><dd><ul> <li>a pointer to a user specific piece of data</li> <li>GLOBUS_NULL (does not indicate error) </li> </ul> </dd></dl> </div> </div> <a class="anchor" id="gaf580100a8038cf8e54e15f8b5d484a7b"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef void(* globus_ftp_client_throughput_plugin_user_destroy_cb_t)(void *user_specific)</td> </tr> </table> </div><div class="memdoc"> <p>DestructorThis callback will be called when a copy of this plugin is destroyed, it is intended to allow the user to free up any memory associated with the user specific data. </p> <dl class="params"><dt>Parameters:</dt><dd> <table class="params"> <tr><td class="paramname">user_specific</td><td>this is user specific data created by the copy method</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns:</dt><dd><ul> <li>n/a </li> </ul> </dd></dl> </div> </div> <hr/><h2>Function Documentation</h2> <a class="anchor" id="ga4c141499bfd91a76758fa558e6328a7e"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">globus_result_t globus_ftp_client_throughput_plugin_init </td> <td>(</td> <td class="paramtype"><a class="el" href="group__globus__ftp__client__plugins.html#gafd650bbeee4bf50b94275d89352697dc">globus_ftp_client_plugin_t</a> * </td> <td class="paramname"><em>plugin</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__globus__ftp__client__throughput__plugin.html#ga635fcdcd8bc88682f974b6258665fa77">globus_ftp_client_throughput_plugin_begin_cb_t</a> </td> <td class="paramname"><em>begin_cb</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__globus__ftp__client__throughput__plugin.html#gad3378988c81b09b07a56be73b81d7e39">globus_ftp_client_throughput_plugin_stripe_cb_t</a> </td> <td class="paramname"><em>per_stripe_cb</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__globus__ftp__client__throughput__plugin.html#ga94697ba39253977f5edc0f616baa3f07">globus_ftp_client_throughput_plugin_total_cb_t</a> </td> <td class="paramname"><em>total_cb</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__globus__ftp__client__throughput__plugin.html#ga41213a4cc3331fdd9ae607ecaeb35122">globus_ftp_client_throughput_plugin_complete_cb_t</a> </td> <td class="paramname"><em>complete_cb</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>user_specific</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Throughput plugin initUse this function to initialize a throughput plugin. </p> <p>The throughput plugin sits on top of the perf_plugin. The only required param is 'plugin', all others may be GLOBUS_NULL</p> <dl class="params"><dt>Parameters:</dt><dd> <table class="params"> <tr><td class="paramname">plugin</td><td>a pointer to a plugin type to be initialized</td></tr> <tr><td class="paramname">begin_cb</td><td>the callback to be called upon the start of a transfer</td></tr> <tr><td class="paramname">per_stripe_cb</td><td>the callback to be called every time updated throughput info is available for a given stripe</td></tr> <tr><td class="paramname">total_cb</td><td>the callback to be called every time updated throughput info is available for any stripe</td></tr> <tr><td class="paramname">complete_cb</td><td>the callback to be called to indicate transfer completion</td></tr> <tr><td class="paramname">user_specific</td><td>a pointer to some user specific data that will be provided to all callbacks</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns:</dt><dd><ul> <li>GLOBUS_SUCCESS</li> <li>Error on NULL plugin</li> <li>Error on init perf plugin </li> </ul> </dd></dl> </div> </div> <a class="anchor" id="ga2bac7cad7c25297659548216b1d547d2"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">globus_result_t globus_ftp_client_throughput_plugin_set_copy_destroy </td> <td>(</td> <td class="paramtype"><a class="el" href="group__globus__ftp__client__plugins.html#gafd650bbeee4bf50b94275d89352697dc">globus_ftp_client_plugin_t</a> * </td> <td class="paramname"><em>plugin</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__globus__ftp__client__throughput__plugin.html#gaee0d6a6086190474c8c752eeb5f58448">globus_ftp_client_throughput_plugin_user_copy_cb_t</a> </td> <td class="paramname"><em>copy_cb</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__globus__ftp__client__throughput__plugin.html#gaf580100a8038cf8e54e15f8b5d484a7b">globus_ftp_client_throughput_plugin_user_destroy_cb_t</a> </td> <td class="paramname"><em>destroy_cb</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Set user copy and destroy callbacksUse this to have the plugin make callbacks any time a copy of this plugin is being made. </p> <p>This will allow the user to keep state for different handles.</p> <dl class="params"><dt>Parameters:</dt><dd> <table class="params"> <tr><td class="paramname">plugin</td><td>plugin previously initialized with init (above)</td></tr> <tr><td class="paramname">copy_cb</td><td>func to be called when a copy is needed</td></tr> <tr><td class="paramname">destroy_cb</td><td>func to be called when a copy is to be destroyed</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns:</dt><dd><ul> <li>Error on NULL arguments</li> <li>GLOBUS_SUCCESS </li> </ul> </dd></dl> </div> </div> <a class="anchor" id="gac1041b36437cb1401cf0e65c71246d84"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">globus_result_t globus_ftp_client_throughput_plugin_destroy </td> <td>(</td> <td class="paramtype"><a class="el" href="group__globus__ftp__client__plugins.html#gafd650bbeee4bf50b94275d89352697dc">globus_ftp_client_plugin_t</a> * </td> <td class="paramname"><em>plugin</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Destroy throughput pluginFrees up memory associated with plugin. </p> <dl class="params"><dt>Parameters:</dt><dd> <table class="params"> <tr><td class="paramname">plugin</td><td>plugin previously initialized with init (above)</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns:</dt><dd><ul> <li>GLOBUS_SUCCESS</li> <li>Error on NULL plugin </li> </ul> </dd></dl> </div> </div> <a class="anchor" id="gaf384442919d57f1420a29ec72fe3fc09"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">globus_result_t globus_ftp_client_throughput_plugin_get_user_specific </td> <td>(</td> <td class="paramtype"><a class="el" href="group__globus__ftp__client__plugins.html#gafd650bbeee4bf50b94275d89352697dc">globus_ftp_client_plugin_t</a> * </td> <td class="paramname"><em>plugin</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void ** </td> <td class="paramname"><em>user_specific</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Retrieve user specific pointer. </p> <dl class="params"><dt>Parameters:</dt><dd> <table class="params"> <tr><td class="paramname">plugin</td><td>plugin previously initialized with init (above)</td></tr> <tr><td class="paramname">user_specific</td><td>pointer to storage for user_specific pointer</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns:</dt><dd><ul> <li>GLOBUS_SUCCESS</li> <li>Error on NULL plugin</li> <li>Error on NULL user_specific </li> </ul> </dd></dl> </div> </div> </div><!-- contents --> </div><!-- doc-content --> <hr> <p align="center"> <a href="http://www.globus.org/toolkit/about.html" target="_top">about globus</a> | <a href="http://www.globus.org/toolkit/" target="_top">globus toolkit</a> | <a href="https://dev.globus.org/wiki/Welcome/" target="_top">dev.globus</a> <br> <br> Comments? <a href="mailto:webmaster@globus.org">webmaster@globus.org</a> </body> </html>