Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > 39907065f1eb3c6a70bcb6d8d4286f7f > files > 37

globus-gram-protocol-doc-9.7-6.fc14.noarch.rpm

<!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.7.4 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
    </ul>
  </div>
</div>
<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">
  initNavTree('group__globus__gram__protocol__io.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">Message I/O</div>  </div>
<div class="ingroups"><a class="el" href="group__globus__gram__protocol__functions.html">Functions</a></div></div>
<div class="contents">

<p>The functions in this section are related to sending and receiving GRAM protocol messages.  
<a href="#details">More...</a></p>
<div class="dynheader">
Collaboration diagram for Message I/O:</div>
<div class="dyncontent">
<center><table><tr><td><img src="group__globus__gram__protocol__io.png" border="0" alt="" usemap="#group____globus____gram____protocol____io"/>
<map name="group____globus____gram____protocol____io" id="group____globus____gram____protocol____io">
<area shape="rect" id="node2" href="group__globus__gram__protocol__functions.html" title="Functions" alt="" coords="7,5,84,35"/></map>
</td></tr></table></center>
</div>
<h2><a name="typedef-members"></a>
Typedefs</h2>
<ul>
<li>typedef unsigned long <a class="el" href="group__globus__gram__protocol__io.html#ga52f0d72e2a837c8ebf8982ae620b8c1f">globus_gram_protocol_handle_t</a>
<li>typedef struct <br class="typebreak"/>
globus_gram_protocol_hash_entry_s <a class="el" href="group__globus__gram__protocol__io.html#ga3469e6c745f6e13ed624fd955a5017da">globus_gram_protocol_extension_t</a>
</ul>
<h2><a name="func-members"></a>
Functions</h2>
<ul>
<li>int <a class="el" href="group__globus__gram__protocol__io.html#gac5c42885829361fcf8a1879760b9e89e">globus_gram_protocol_setup_attr</a> (globus_io_attr_t *attr)
<li>globus_bool_t <a class="el" href="group__globus__gram__protocol__io.html#ga29305e6c34a83eb86ebb82000335f4a8">globus_gram_protocol_authorize_self</a> (gss_ctx_id_t context)
<li>int <a class="el" href="group__globus__gram__protocol__io.html#ga5672d838f7c38e983d09c4c73e00b0eb">globus_gram_protocol_allow_attach</a> (char **url, globus_gram_protocol_callback_t callback, void *callback_arg)
<li>int <a class="el" href="group__globus__gram__protocol__io.html#ga439b63f5fba38e88262ec5fbc2626f31">globus_gram_protocol_callback_disallow</a> (char *url)
<li>int <a class="el" href="group__globus__gram__protocol__io.html#gad1abe20b6a040c49266f17d96d160b38">globus_gram_protocol_post</a> (const char *url, <a class="el" href="group__globus__gram__protocol__io.html#ga52f0d72e2a837c8ebf8982ae620b8c1f">globus_gram_protocol_handle_t</a> *handle, globus_io_attr_t *attr, globus_byte_t *message, globus_size_t message_size, globus_gram_protocol_callback_t callback, void *callback_arg)
<li>int <a class="el" href="group__globus__gram__protocol__io.html#gab3c5a442047e896b80dc47915ba0204c">globus_gram_protocol_post_delegation</a> (const char *url, <a class="el" href="group__globus__gram__protocol__io.html#ga52f0d72e2a837c8ebf8982ae620b8c1f">globus_gram_protocol_handle_t</a> *handle, globus_io_attr_t *attr, globus_byte_t *message, globus_size_t message_size, gss_cred_id_t cred_handle, gss_OID_set restriction_oids, gss_buffer_set_t restriction_buffers, OM_uint32 req_flags, OM_uint32 time_req, globus_gram_protocol_callback_t callback, void *callback_arg)
<li>int <a class="el" href="group__globus__gram__protocol__io.html#gab69a2fc894783c133b16aa8ca4d6546c">globus_gram_protocol_reply</a> (<a class="el" href="group__globus__gram__protocol__io.html#ga52f0d72e2a837c8ebf8982ae620b8c1f">globus_gram_protocol_handle_t</a> handle, int code, globus_byte_t *message, globus_size_t message_size)
<li>int <a class="el" href="group__globus__gram__protocol__io.html#gac2cc914d51bd024266403c46728bcd4b">globus_gram_protocol_accept_delegation</a> (<a class="el" href="group__globus__gram__protocol__io.html#ga52f0d72e2a837c8ebf8982ae620b8c1f">globus_gram_protocol_handle_t</a> handle, gss_OID_set restriction_oids, gss_buffer_set_t restriction_buffers, OM_uint32 req_flags, OM_uint32 time_req, globus_gram_protocol_delegation_callback_t callback, void *arg)
<li>int <a class="el" href="group__globus__gram__protocol__io.html#ga84b9c461ea14b11f86100b7e9d4cc12d">globus_gram_protocol_get_sec_context</a> (<a class="el" href="group__globus__gram__protocol__io.html#ga52f0d72e2a837c8ebf8982ae620b8c1f">globus_gram_protocol_handle_t</a> handle, gss_ctx_id_t *context)
</ul>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<p>The functions in this section are related to sending and receiving GRAM protocol messages. </p>
<hr/><h2>Typedef Documentation</h2>
<a class="anchor" id="ga52f0d72e2a837c8ebf8982ae620b8c1f"></a><!-- doxytag: member="globus_gram_protocol.h::globus_gram_protocol_handle_t" ref="ga52f0d72e2a837c8ebf8982ae620b8c1f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__globus__gram__protocol__io.html#ga52f0d72e2a837c8ebf8982ae620b8c1f">globus_gram_protocol_handle_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Unique GRAM protocol identifier. </p>
<p>The <em><a class="el" href="group__globus__gram__protocol__io.html#ga52f0d72e2a837c8ebf8982ae620b8c1f" title="Unique GRAM protocol identifier.">globus_gram_protocol_handle_t</a></em> data type is used by functions in the GRAM protocol API as a unique discriminant between instances of a callback invocation.</p>
<p>There are no public functions that operate on these handles. They are used as identifiers for callback functions. </p>

</div>
</div>
<a class="anchor" id="ga3469e6c745f6e13ed624fd955a5017da"></a><!-- doxytag: member="globus_gram_protocol.h::globus_gram_protocol_extension_t" ref="ga3469e6c745f6e13ed624fd955a5017da" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__globus__gram__protocol__io.html#ga3469e6c745f6e13ed624fd955a5017da">globus_gram_protocol_extension_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>GRAM protocol extension attribute-value pair. </p>
<p>The <em>globus_gram_protocol_extension_t</em> data type contains an attribute value pair that represents an extension to the GRAM2 protocol. </p>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="gac5c42885829361fcf8a1879760b9e89e"></a><!-- doxytag: member="globus_gram_protocol.c::globus_gram_protocol_setup_attr" ref="gac5c42885829361fcf8a1879760b9e89e" args="(globus_io_attr_t *attr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int globus_gram_protocol_setup_attr </td>
          <td>(</td>
          <td class="paramtype">globus_io_attr_t *&#160;</td>
          <td class="paramname"><em>attr</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create default I/O attribute for GRAM. </p>
<p>The <a class="el" href="group__globus__gram__protocol__io.html#gac5c42885829361fcf8a1879760b9e89e" title="Create default I/O attribute for GRAM.">globus_gram_protocol_setup_attr()</a> function creates a new globus_io attribute containing the default set of values needed for communication between a GRAM client and a job manager. These attributes include:</p>
<ul>
<li>SO_KEEPALIVE</li>
<li>GSSAPI Mutual Authentication</li>
<li>GSSAPI Self Authorization</li>
<li>SSL-compatible message wrapping</li>
</ul>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">attr</td><td>A pointer to a <em>globus_io_attr_t</em> structure which will be initialized by this function.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Upon success, <a class="el" href="group__globus__gram__protocol__io.html#gac5c42885829361fcf8a1879760b9e89e" title="Create default I/O attribute for GRAM.">globus_gram_protocol_setup_attr()</a> modifies the <em>attr</em> parameter to point to a new attribute and returns the value <em>GLOBUS_SUCCESS</em>. When this occurs, the caller must destroy the attribute when no longer needed by calling globus_io_tcpattr_destroy(). If an error occurs, its value will be returned and the attribute pointed to by the <em>attr</em> parameter will be set to an uninitialized state.</dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">GLOBUS_SUCCESS</td><td>Success </td></tr>
    <tr><td class="paramname">GLOBUS_GRAM_PROTOCOL_ERROR_CONNECTION_FAILED</td><td>Error initializing attribute </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga29305e6c34a83eb86ebb82000335f4a8"></a><!-- doxytag: member="globus_gram_protocol.c::globus_gram_protocol_authorize_self" ref="ga29305e6c34a83eb86ebb82000335f4a8" args="(gss_ctx_id_t context)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">globus_bool_t globus_gram_protocol_authorize_self </td>
          <td>(</td>
          <td class="paramtype">gss_ctx_id_t&#160;</td>
          <td class="paramname"><em>context</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Determine if a GSSAPI context has the same source and target identities. </p>
<p>The <a class="el" href="group__globus__gram__protocol__io.html#ga29305e6c34a83eb86ebb82000335f4a8" title="Determine if a GSSAPI context has the same source and target identities.">globus_gram_protocol_authorize_self()</a> function implements a predicate which returns true if the source and destination identities used to establish the GSSAPI security context are the same.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">context</td><td>A GSSAPI security context which has been previously established. The source and target names of this context will be inspected by this function.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>If the source and target identiies are the same, then <em><a class="el" href="group__globus__gram__protocol__io.html#ga29305e6c34a83eb86ebb82000335f4a8" title="Determine if a GSSAPI context has the same source and target identities.">globus_gram_protocol_authorize_self()</a></em> returns <em>GLOBUS_TRUE</em>, otherwise, this function returns <em>GLOBUS_FALSE</em>.</dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">GLOBUS_TRUE</td><td>The source and target identities are the same. </td></tr>
    <tr><td class="paramname">GLOBUS_FALSE</td><td>The source and target identities are not the same or this function is unabled to inspect the security context. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga5672d838f7c38e983d09c4c73e00b0eb"></a><!-- doxytag: member="globus_gram_protocol_io.c::globus_gram_protocol_allow_attach" ref="ga5672d838f7c38e983d09c4c73e00b0eb" args="(char **url, globus_gram_protocol_callback_t callback, void *callback_arg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int globus_gram_protocol_allow_attach </td>
          <td>(</td>
          <td class="paramtype">char **&#160;</td>
          <td class="paramname"><em>url</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">globus_gram_protocol_callback_t&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>callback_arg</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a GRAM protocol service listener. </p>
<p>The <a class="el" href="group__globus__gram__protocol__io.html#ga5672d838f7c38e983d09c4c73e00b0eb" title="Create a GRAM protocol service listener.">globus_gram_protocol_allow_attach()</a> function creates a GRAM protocol listener to which other processes can send GRAM protocol messages. The listener will automatically accept new connections on it's TCP/IP port and parse GRAM requests. The requests will be passed to the function pointed to by the <em>callback</em> parameter for the application to unpack, handle, and send a reply by calling <a class="el" href="group__globus__gram__protocol__io.html#gab69a2fc894783c133b16aa8ca4d6546c" title="Reply to a GRAM protocol message.">globus_gram_protocol_reply()</a>.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">url</td><td>An output parameter that will be initialized to point to a string that will hold the URL of the new listener. This URL may be published or otherwise passed to applications which need to contact this GRAM protocol server. The URL will be of the form <em><a href="https://host:port/.">https://host:port/.</a></em> </td></tr>
    <tr><td class="paramname">callback</td><td>A pointer to a function to be called when a new request has been received by this listener. This function will be passed the request, which may be unpacked using one of the functions described in the <a class="el" href="group__globus__gram__protocol__pack.html">message packing </a> section of the documentation. </td></tr>
    <tr><td class="paramname">callback_arg</td><td>A pointer to arbitrary user data which will be passed to the callback function as its first parameter.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Upon success, <a class="el" href="group__globus__gram__protocol__io.html#ga5672d838f7c38e983d09c4c73e00b0eb" title="Create a GRAM protocol service listener.">globus_gram_protocol_allow_attach()</a> returns <em>GLOBUS_SUCCESS</em> and modifies the <em>url</em> parameter to point to a newly allocated string. The caller is then responsible for freeing this string. If an error occurs, an integer error code will be returned and the <em>url</em> parameter value will be uninitialized.</dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">GLOBUS_SUCCESS</td><td>Success </td></tr>
    <tr><td class="paramname">GLOBUS_GRAM_PROTOCOL_ERROR_INVALID_REQUEST</td><td>Invalid request </td></tr>
    <tr><td class="paramname">GLOBUS_GRAM_PROTOCOL_ERROR_MALLOC_FAILED</td><td>Out of memory </td></tr>
    <tr><td class="paramname">GLOBUS_GRAM_PROTOCOL_ERROR_NO_RESOURCES</td><td>No resources</td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__globus__gram__protocol__io.html#ga439b63f5fba38e88262ec5fbc2626f31" title="Stop a GASS protocol listener from handling new requests.">globus_gram_protocol_callback_disallow()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga439b63f5fba38e88262ec5fbc2626f31"></a><!-- doxytag: member="globus_gram_protocol_io.c::globus_gram_protocol_callback_disallow" ref="ga439b63f5fba38e88262ec5fbc2626f31" args="(char *url)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int globus_gram_protocol_callback_disallow </td>
          <td>(</td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>url</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Stop a GASS protocol listener from handling new requests. </p>
<p>The <a class="el" href="group__globus__gram__protocol__io.html#ga439b63f5fba38e88262ec5fbc2626f31" title="Stop a GASS protocol listener from handling new requests.">globus_gram_protocol_callback_disallow()</a> function stops the listener named by the value of the <em>url</em> parameter from receiving any new requests. It also frees memory used internally by the GRAM protocol implementation to handle requests for this listener.</p>
<p>The <a class="el" href="group__globus__gram__protocol__io.html#ga439b63f5fba38e88262ec5fbc2626f31" title="Stop a GASS protocol listener from handling new requests.">globus_gram_protocol_callback_disallow()</a> function will wait until all requests being processed by this listener have completed processing. Once <a class="el" href="group__globus__gram__protocol__io.html#ga439b63f5fba38e88262ec5fbc2626f31" title="Stop a GASS protocol listener from handling new requests.">globus_gram_protocol_callback_disallow()</a> returns, no further request callbacks will occur for the listener.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">url</td><td>A pointer to the URL string which names the listener to disable.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Upon success, the <a class="el" href="group__globus__gram__protocol__io.html#ga439b63f5fba38e88262ec5fbc2626f31" title="Stop a GASS protocol listener from handling new requests.">globus_gram_protocol_callback_disallow()</a> function returns <em>GLOBUS_SUCCESS</em> and frees internal state associated with the listener named by the <em>url</em> parameter. If an error occurs, its integer error code value will be returned and no listener will be affected.</dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">GLOBUS_SUCCESS</td><td>Success </td></tr>
    <tr><td class="paramname">GLOBUS_GRAM_PROTOCOL_ERROR_INVALID_JOB_CONTACT</td><td>Invalid job contact </td></tr>
    <tr><td class="paramname">GLOBUS_GRAM_PROTOCOL_ERROR_CALLBACK_NOT_FOUND</td><td>Callback not found</td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__globus__gram__protocol__io.html#ga5672d838f7c38e983d09c4c73e00b0eb" title="Create a GRAM protocol service listener.">globus_gram_protocol_allow_attach()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gad1abe20b6a040c49266f17d96d160b38"></a><!-- doxytag: member="globus_gram_protocol_io.c::globus_gram_protocol_post" ref="gad1abe20b6a040c49266f17d96d160b38" args="(const char *url, globus_gram_protocol_handle_t *handle, globus_io_attr_t *attr, globus_byte_t *message, globus_size_t message_size, globus_gram_protocol_callback_t callback, void *callback_arg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int globus_gram_protocol_post </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>url</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__globus__gram__protocol__io.html#ga52f0d72e2a837c8ebf8982ae620b8c1f">globus_gram_protocol_handle_t</a> *&#160;</td>
          <td class="paramname"><em>handle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">globus_io_attr_t *&#160;</td>
          <td class="paramname"><em>attr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">globus_byte_t *&#160;</td>
          <td class="paramname"><em>message</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">globus_size_t&#160;</td>
          <td class="paramname"><em>message_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">globus_gram_protocol_callback_t&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>callback_arg</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Post a GRAM protocol request to a GRAM server. </p>
<p>The <a class="el" href="group__globus__gram__protocol__io.html#gad1abe20b6a040c49266f17d96d160b38" title="Post a GRAM protocol request to a GRAM server.">globus_gram_protocol_post()</a> function initiates a GRAM protocol message exchange with a GRAM protocol listener. It returns after framing the message and initiating the connection. When the message exchange is complete, the function pointed to by <em>callback</em> is invoked either in another thread or when a non-threaded application calls the <a class="elRef" href="group__globus__callback__api.html#ga6a041076a6c38643473d5404050e5937">globus_poll()</a> or globus_cond_wait() functions.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">url</td><td>A pointer to a string containing the URL of the server to post the request to. This URL must be an HTTPS URL naming a GRAM service resource. </td></tr>
    <tr><td class="paramname">handle</td><td>A pointer to a <em>globus_gram_protocol_handle_t</em> which will be initialized with a unique handle identifier. This identifier will be passed to the <em>callback</em> function to allow the caller to differentiate replies to multiple GRAM Protocol requests. This pointer may be NULL if the caller will not have multiple simultaneous requests. </td></tr>
    <tr><td class="paramname">attr</td><td>A pointer to a Globus I/O attribute set, which will be used as parameters when connecting to the GRAM server. The value of <em>attr</em> may be NULL, in which case, the default GRAM Protocol attributes will be used (authentication to self, SSL-compatible transport, with message integrity). </td></tr>
    <tr><td class="paramname">message</td><td>A pointer to a message string to be sent to the GRAM server. This is normally created by calling one of the GRAM Protocol <a class="el" href="group__globus__gram__protocol__pack.html">pack </a> functions. This message need not be NULL terminated as the length is passed in the <em>message_size</em> parameter. </td></tr>
    <tr><td class="paramname">message_size</td><td>The length of the <em>message</em> string. Typically generated as one of the output parameters to one of the GRAM Protocol <a class="el" href="group__globus__gram__protocol__pack.html">pack </a> functions. </td></tr>
    <tr><td class="paramname">callback</td><td>A pointer to a function to call when the response to this message is received or the message exchange fails. This may be NULL, in which case no callback will be received, and the caller will be unable to verify whether the message was successfully received. </td></tr>
    <tr><td class="paramname">callback_arg</td><td>A pointer to application-specific data which will be passed to the function pointed to by <em>callback</em> as its first parameter. This may be NULL if the application has a NULL <em>callback</em> or does not require the pointer to establish its context in the callback.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Upon success, <a class="el" href="group__globus__gram__protocol__io.html#gad1abe20b6a040c49266f17d96d160b38" title="Post a GRAM protocol request to a GRAM server.">globus_gram_protocol_post()</a> returns GLOBUS_SUCCESS, initiates the message exchange, registers the function pointed to by <em>callback</em> to be called when the exchange completes or fails, and modifies the <em>handle</em> parameter if it is non-NULL. If an error occurs, its error code will be returned, the <em>handle</em> parameter will be uninitialized and the function pointed to be <em>callback</em> will not be called.</dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">GLOBUS_SUCCESS</td><td>Success </td></tr>
    <tr><td class="paramname">GLOBUS_GRAM_PROTOCOL_ERROR_INVALID_JOB_CONTACT</td><td>Invalid job contact </td></tr>
    <tr><td class="paramname">GLOBUS_GRAM_PROTOCOL_ERROR_MALLOC_FAILED</td><td>Out of memory </td></tr>
    <tr><td class="paramname">GLOBUS_GRAM_PROTOCOL_ERROR_INVALID_REQUEST</td><td>Invalid request </td></tr>
    <tr><td class="paramname">GLOBUS_GRAM_PROTOCOL_ERROR_NO_RESOURCES</td><td>No resources</td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>Note:</b></dt><dd>There is no way to time out or cancel a service request that is begun with <a class="el" href="group__globus__gram__protocol__io.html#gad1abe20b6a040c49266f17d96d160b38" title="Post a GRAM protocol request to a GRAM server.">globus_gram_protocol_post()</a>.</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__globus__gram__protocol__io.html#gab69a2fc894783c133b16aa8ca4d6546c" title="Reply to a GRAM protocol message.">globus_gram_protocol_reply()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gab3c5a442047e896b80dc47915ba0204c"></a><!-- doxytag: member="globus_gram_protocol_io.c::globus_gram_protocol_post_delegation" ref="gab3c5a442047e896b80dc47915ba0204c" args="(const char *url, globus_gram_protocol_handle_t *handle, globus_io_attr_t *attr, globus_byte_t *message, globus_size_t message_size, gss_cred_id_t cred_handle, gss_OID_set restriction_oids, gss_buffer_set_t restriction_buffers, OM_uint32 req_flags, OM_uint32 time_req, globus_gram_protocol_callback_t callback, void *callback_arg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int globus_gram_protocol_post_delegation </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>url</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__globus__gram__protocol__io.html#ga52f0d72e2a837c8ebf8982ae620b8c1f">globus_gram_protocol_handle_t</a> *&#160;</td>
          <td class="paramname"><em>handle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">globus_io_attr_t *&#160;</td>
          <td class="paramname"><em>attr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">globus_byte_t *&#160;</td>
          <td class="paramname"><em>message</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">globus_size_t&#160;</td>
          <td class="paramname"><em>message_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">gss_cred_id_t&#160;</td>
          <td class="paramname"><em>cred_handle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">gss_OID_set&#160;</td>
          <td class="paramname"><em>restriction_oids</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">gss_buffer_set_t&#160;</td>
          <td class="paramname"><em>restriction_buffers</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">OM_uint32&#160;</td>
          <td class="paramname"><em>req_flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">OM_uint32&#160;</td>
          <td class="paramname"><em>time_req</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">globus_gram_protocol_callback_t&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>callback_arg</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Post a GRAM protocol delegation request to a GRAM server. </p>
<p>The <a class="el" href="group__globus__gram__protocol__io.html#gab3c5a442047e896b80dc47915ba0204c" title="Post a GRAM protocol delegation request to a GRAM server.">globus_gram_protocol_post_delegation()</a> function initiates a GRAM protocol delegation exchange with a GRAM protocol listener. The delegation protocol is a custom mix of HTTP and SSL records.</p>
<p>The <a class="el" href="group__globus__gram__protocol__io.html#gab3c5a442047e896b80dc47915ba0204c" title="Post a GRAM protocol delegation request to a GRAM server.">globus_gram_protocol_post_delegation()</a> function returns after framing the message and initiating the connection to be used for delegation. When the message exchange is complete, the function pointed to by <em>callback</em> is invoked either in another thread or when a non-threaded application calls the <a class="elRef" href="group__globus__callback__api.html#ga6a041076a6c38643473d5404050e5937">globus_poll()</a> or globus_cond_wait() functions.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">url</td><td>A pointer to a string containing the URL of the server to post the request to. This URL must be an HTTPS URL naming a GRAM service resource. </td></tr>
    <tr><td class="paramname">handle</td><td>A pointer to a <em>globus_gram_protocol_handle_t</em> which will be initialized with a unique handle identifier. This identifier will be passed to the <em>callback</em> function to allow the caller to differentiate replies to multiple GRAM Protocol requests. This pointer may be NULL if the caller will not have multiple simultaneous requests. </td></tr>
    <tr><td class="paramname">attr</td><td>A pointer to a Globus I/O attribute set, which will be used as parameters when connecting to the GRAM server. The value of <em>attr</em> may be NULL, in which case, the default GRAM Protocol attributes will be used (authentication to self, SSL-compatible transport, with message integrity). </td></tr>
    <tr><td class="paramname">message</td><td>A pointer to a message string to be sent to the GRAM server. This is normally created by calling one of the GRAM Protocol <a class="el" href="group__globus__gram__protocol__pack.html">pack </a> functions. This message need not be NULL terminated as the length is passed in the <em>message_size</em> parameter. </td></tr>
    <tr><td class="paramname">message_size</td><td>The length of the <em>message</em> string. Typically generated as one of the output parameters to one of the GRAM Protocol <a class="el" href="group__globus__gram__protocol__pack.html">pack </a> functions. </td></tr>
    <tr><td class="paramname">cred_handle</td><td>Handle to an existing GSSAPI security credential. If this parameter is set to <em>GSS_C_NO_CREDENTIAL</em>, then the current account's default credential will be used. A proxy credential sharing the identity of this credential will be delegated to the GRAM protocol server. </td></tr>
    <tr><td class="paramname">restriction_oids</td><td>A set of OID values indicating the data in the <em>restriction_buffers</em> parameter. This parameter may have the value GSS_C_NO_OID_SET if there are no restriction buffers. </td></tr>
    <tr><td class="paramname">restriction_buffers</td><td>A set of binary data buffers which will be included in the delegated credential. The type of data in these buffers is determined by the OID values in <em>restriction_oids</em>. This parameter may have the value GSS_C_EMPTY_BUFFER_SET if there are no extra restrictions to be added to the credential. </td></tr>
    <tr><td class="paramname">req_flags</td><td>A bitwise-or of GSSAPI flag values to use when delegating the credential using gss_init_delegation(). </td></tr>
    <tr><td class="paramname">time_req</td><td>An integer value indicating the length of time (in seconds) that the delegated credential should be valid for. This is an advisory parameter: no error will be returned if a credential with the requested lifetime can not be created. </td></tr>
    <tr><td class="paramname">callback</td><td>A pointer to a function to call when the response to this message is received or the message exchange fails. This may be NULL, in which case no callback will be received, and the caller will be unable to verify whether the message was successfully received. </td></tr>
    <tr><td class="paramname">callback_arg</td><td>A pointer to application-specific data which will be passed to the function pointed to by <em>callback</em> as its first parameter. This may be NULL if the application has a NULL <em>callback</em> or does not require the pointer to establish its context in the callback.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Upon success, <a class="el" href="group__globus__gram__protocol__io.html#gab3c5a442047e896b80dc47915ba0204c" title="Post a GRAM protocol delegation request to a GRAM server.">globus_gram_protocol_post_delegation()</a> returns GLOBUS_SUCCESS, initiates the message exchange, registers the function pointed to by <em>callback</em> to be called when the exchange completes or fails, and modifies the <em>handle</em> parameter if it is non-NULL. If an error occurs, its error code will be returned, the <em>handle</em> parameter will be uninitialized and the function pointed to be <em>callback</em> will not be called. In the case of a protocol or delegation failure, the callback function will be called with the <em>errorcode</em> parameter set to the error.</dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">GLOBUS_SUCCESS</td><td>Success </td></tr>
    <tr><td class="paramname">GLOBUS_GRAM_PROTOCOL_ERROR_INVALID_JOB_CONTACT</td><td>Invalid job contact </td></tr>
    <tr><td class="paramname">GLOBUS_GRAM_PROTOCOL_ERROR_MALLOC_FAILED</td><td>Out of memory </td></tr>
    <tr><td class="paramname">GLOBUS_GRAM_PROTOCOL_ERROR_INVALID_REQUEST</td><td>Invalid request </td></tr>
    <tr><td class="paramname">GLOBUS_GRAM_PROTOCOL_ERROR_NO_RESOURCES</td><td>No resources</td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>Note:</b></dt><dd>There is no way to time out or cancel a service request that is begun with <a class="el" href="group__globus__gram__protocol__io.html#gab3c5a442047e896b80dc47915ba0204c" title="Post a GRAM protocol delegation request to a GRAM server.">globus_gram_protocol_post_delegation()</a>.</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__globus__gram__protocol__io.html#gab69a2fc894783c133b16aa8ca4d6546c" title="Reply to a GRAM protocol message.">globus_gram_protocol_reply()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gab69a2fc894783c133b16aa8ca4d6546c"></a><!-- doxytag: member="globus_gram_protocol_io.c::globus_gram_protocol_reply" ref="gab69a2fc894783c133b16aa8ca4d6546c" args="(globus_gram_protocol_handle_t handle, int code, globus_byte_t *message, globus_size_t message_size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int globus_gram_protocol_reply </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__globus__gram__protocol__io.html#ga52f0d72e2a837c8ebf8982ae620b8c1f">globus_gram_protocol_handle_t</a>&#160;</td>
          <td class="paramname"><em>handle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>code</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">globus_byte_t *&#160;</td>
          <td class="paramname"><em>message</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">globus_size_t&#160;</td>
          <td class="paramname"><em>message_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Reply to a GRAM protocol message. </p>
<p>The <em><a class="el" href="group__globus__gram__protocol__io.html#gab69a2fc894783c133b16aa8ca4d6546c" title="Reply to a GRAM protocol message.">globus_gram_protocol_reply()</a></em> function sends a response message to a client which initiated a GRAM message exchange. The <em><a class="el" href="group__globus__gram__protocol__io.html#gab69a2fc894783c133b16aa8ca4d6546c" title="Reply to a GRAM protocol message.">globus_gram_protocol_reply()</a></em> function composes the message with an HTTP message frame and then sends it to the client which initiated the exchange.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">handle</td><td>A GRAM protocol handle which is used by this function to determine the network connection to use for this reply. This must be the same value as was passed as a parameter to the callback function registered with the <em><a class="el" href="group__globus__gram__protocol__io.html#ga5672d838f7c38e983d09c4c73e00b0eb" title="Create a GRAM protocol service listener.">globus_gram_protocol_allow_attach()</a></em> function. </td></tr>
    <tr><td class="paramname">code</td><td>The HTTP response code. The code should be one from the set described in RFC 2616. </td></tr>
    <tr><td class="paramname">message</td><td>A pointer to a message string to be sent to the GRAM client. This is normally created by calling one of the GRAM Protocol <a class="el" href="group__globus__gram__protocol__pack.html">pack </a> functions. This message need not be NULL terminated as the length is passed in the <em>message_size</em> parameter. </td></tr>
    <tr><td class="paramname">message_size</td><td>The length of the <em>message</em> string. Typically generated as one of the output parameters to one of the GRAM Protocol <a class="el" href="group__globus__gram__protocol__pack.html">pack </a> functions.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Upon success, <em><a class="el" href="group__globus__gram__protocol__io.html#gab69a2fc894783c133b16aa8ca4d6546c" title="Reply to a GRAM protocol message.">globus_gram_protocol_reply()</a></em> returns GLOBUS_SUCCESS, frames the <em>message</em> with an HTTP header and initiates sending the message to the client. The caller must not try to use the value of the <em>handle</em> parameter after this function returns. If an error occurs, its integer error code will be returned.</dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">GLOBUS_SUCCESS</td><td>Success </td></tr>
    <tr><td class="paramname">GLOBUS_GRAM_PROTOCOL_ERROR_INVALID_REQUEST</td><td>Invalid request </td></tr>
    <tr><td class="paramname">GLOBUS_GRAM_PROTOCOL_ERROR_NO_RESOURCES</td><td>No Resources</td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__globus__gram__protocol__io.html#ga5672d838f7c38e983d09c4c73e00b0eb" title="Create a GRAM protocol service listener.">globus_gram_protocol_allow_attach()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gac2cc914d51bd024266403c46728bcd4b"></a><!-- doxytag: member="globus_gram_protocol_io.c::globus_gram_protocol_accept_delegation" ref="gac2cc914d51bd024266403c46728bcd4b" args="(globus_gram_protocol_handle_t handle, gss_OID_set restriction_oids, gss_buffer_set_t restriction_buffers, OM_uint32 req_flags, OM_uint32 time_req, globus_gram_protocol_delegation_callback_t callback, void *arg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int globus_gram_protocol_accept_delegation </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__globus__gram__protocol__io.html#ga52f0d72e2a837c8ebf8982ae620b8c1f">globus_gram_protocol_handle_t</a>&#160;</td>
          <td class="paramname"><em>handle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">gss_OID_set&#160;</td>
          <td class="paramname"><em>restriction_oids</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">gss_buffer_set_t&#160;</td>
          <td class="paramname"><em>restriction_buffers</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">OM_uint32&#160;</td>
          <td class="paramname"><em>req_flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">OM_uint32&#160;</td>
          <td class="paramname"><em>time_req</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">globus_gram_protocol_delegation_callback_t&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>arg</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Perform the server-side of the GSSAPI delegation handshake to receive a new delegated credential. </p>
<p>The <a class="el" href="group__globus__gram__protocol__io.html#gac2cc914d51bd024266403c46728bcd4b" title="Perform the server-side of the GSSAPI delegation handshake to receive a new delegated credential...">globus_gram_protocol_accept_delegation()</a> function performs the service side accepting of a GRAM protocol delegation exchange with a GRAM protocol client. This is performed after the delegation HTTP message has been unpacked by the application.</p>
<p>The <a class="el" href="group__globus__gram__protocol__io.html#gac2cc914d51bd024266403c46728bcd4b" title="Perform the server-side of the GSSAPI delegation handshake to receive a new delegated credential...">globus_gram_protocol_accept_delegation()</a> function returns after processing the GSSAPI handshake, passing the delegated credential or error information to the function pointed to by the <em>callback</em> parameter.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">handle</td><td>A GRAM protocol handle on which the server received a protocol refresh message. </td></tr>
    <tr><td class="paramname">restriction_oids</td><td>A set of OID values indicating the data in the <em>restriction_buffers</em> parameter. This parameter may have the value GSS_C_NO_OID_SET if there are no restriction buffers. </td></tr>
    <tr><td class="paramname">restriction_buffers</td><td>A set of binary data buffers which will be included in the delegated credential. The type of data in these buffers is determined by the OID values in <em>restriction_oids</em>. This parameter may have the value GSS_C_EMPTY_BUFFER_SET if there are no extra restrictions to be added to the credential. </td></tr>
    <tr><td class="paramname">req_flags</td><td>A bitwise-or of GSSAPI flag values to use when delegating the credential using gss_init_delegation(). </td></tr>
    <tr><td class="paramname">time_req</td><td>An integer value indicating the length of time (in seconds) that the delegated credential should be valid for. This is an advisory parameter: no error will be returned if a credential with the requested lifetime can not be created. </td></tr>
    <tr><td class="paramname">callback</td><td>A pointer to a function to call when the delegation handshake has completed or failed. This function will be passed the value of <em>arg</em> as well as the handle and delegated credential or erorr that occurred processing the delegation messages. </td></tr>
    <tr><td class="paramname">arg</td><td>A pointer to application-specific data which will be passed to the function pointed to by <em>callback</em> as its first parameter. This may be NULL if the application has a NULL <em>callback</em> or does not require the pointer to establish its context in the callback.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Upon success, <a class="el" href="group__globus__gram__protocol__io.html#gac2cc914d51bd024266403c46728bcd4b" title="Perform the server-side of the GSSAPI delegation handshake to receive a new delegated credential...">globus_gram_protocol_accept_delegation()</a> returns GLOBUS_SUCCESS and registers the function pointed to by <em>callback</em> to be called after the delegation completes or fails. If an error occurs, <a class="el" href="group__globus__gram__protocol__io.html#gac2cc914d51bd024266403c46728bcd4b" title="Perform the server-side of the GSSAPI delegation handshake to receive a new delegated credential...">globus_gram_protocol_accept_delegation()</a> returns an integer error code and the <em>callback</em> function is not registered.</dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">GLOBUS_SUCCESS</td><td>Success </td></tr>
    <tr><td class="paramname">GLOBUS_GRAM_PROTOCOL_MALLOC_FAILED</td><td>Malloc failed </td></tr>
    <tr><td class="paramname">GLOBUS_GRAM_PROTOCOL_ERROR_INVALID_REQUEST</td><td>Invalid request </td></tr>
    <tr><td class="paramname">GLOBUS_GRAM_PROTOCOL_ERROR_NO_RESOURCES</td><td>No resources </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga84b9c461ea14b11f86100b7e9d4cc12d"></a><!-- doxytag: member="globus_gram_protocol_io.c::globus_gram_protocol_get_sec_context" ref="ga84b9c461ea14b11f86100b7e9d4cc12d" args="(globus_gram_protocol_handle_t handle, gss_ctx_id_t *context)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int globus_gram_protocol_get_sec_context </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__globus__gram__protocol__io.html#ga52f0d72e2a837c8ebf8982ae620b8c1f">globus_gram_protocol_handle_t</a>&#160;</td>
          <td class="paramname"><em>handle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">gss_ctx_id_t *&#160;</td>
          <td class="paramname"><em>context</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get a reference to the GSSAPI security context associated with a GRAM protocol handle. </p>
<p>The <em><a class="el" href="group__globus__gram__protocol__io.html#ga84b9c461ea14b11f86100b7e9d4cc12d" title="Get a reference to the GSSAPI security context associated with a GRAM protocol handle.">globus_gram_protocol_get_sec_context()</a></em> function retrieves a reference to the GSSAPI security context associated with a particular GRAM protocol handle. This context may be inspected by the caller but must not be destroyed by the caller. The <em><a class="el" href="group__globus__gram__protocol__io.html#ga84b9c461ea14b11f86100b7e9d4cc12d" title="Get a reference to the GSSAPI security context associated with a GRAM protocol handle.">globus_gram_protocol_get_sec_context()</a></em> function must only be called after the GRAM protocol library has called the <em>callback</em> function associated with a GRAM protocol message exchange.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">handle</td><td>The GRAM protocol handle associated with a GRAM protocol message exchange. </td></tr>
    <tr><td class="paramname">context</td><td>The GSSAPI security context associated with the protocol handle.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Upon success, <em><a class="el" href="group__globus__gram__protocol__io.html#ga84b9c461ea14b11f86100b7e9d4cc12d" title="Get a reference to the GSSAPI security context associated with a GRAM protocol handle.">globus_gram_protocol_get_sec_context()</a></em> returns GLOBUS_SUCCESS and modifies the <em>context</em> parameter to point to the security context associated with the <em>handle</em> parameter. If an error occurs, an interger error code is returned and the value of the <em>context</em> parameter is undefined.</dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">GLOBUS_SUCCESS</td><td>Success </td></tr>
    <tr><td class="paramname">GLOBUS_GRAM_PROTOCOL_ERROR_INVALID_REQUEST</td><td>Invalid request </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
</div>
</div>
  <div id="nav-path" class="navpath">
    <ul>
<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>