Sophie

Sophie

distrib > Mandriva > current > x86_64 > by-pkgid > e68df492b0c9f27db58b721fc79af4ec > files > 15

apache-mod_spin-1.2.0-2mdv2010.1.x86_64.rpm

<!-- This comment will put IE 6, 7 and 8 in quirks mode -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>mod_spin: Application and session functions</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javaScript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- Generated by Doxygen 1.6.1 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <img id="MSearchSelect" src="search/search.png"
             onmouseover="return searchBox.OnSearchSelectShow()"
             onmouseout="return searchBox.OnSearchSelectHide()"
             alt=""/>
        <input type="text" id="MSearchField" value="Search" accesskey="S"
             onfocus="searchBox.OnSearchFieldFocus(true)" 
             onblur="searchBox.OnSearchFieldFocus(false)" 
             onkeyup="searchBox.OnSearchFieldChange(event)"/>
        <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
        </div>
      </li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>Application and session functions</h1><table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__as__functions.html#gab252ba45a32b5a9a3dce0795dd1a7dc8">rxv_spin_app_sget</a>(ctx, key)&nbsp;&nbsp;&nbsp;rxv_spin_string(rxv_spin_app_get((ctx),(key)))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__as__functions.html#ga84a490b3a5e2351ac449d95af5330b0c">rxv_spin_app_sset</a>(ctx, key, val)&nbsp;&nbsp;&nbsp;rxv_spin_app_set((ctx),(key),rxv_spin_datum(rxv_spin_pool(ctx),(val),NULL))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__as__functions.html#gab171ef8e730bff3c607dfe5b6906f754">rxv_spin_ses_sget</a>(ctx, key)&nbsp;&nbsp;&nbsp;rxv_spin_string(rxv_spin_ses_get((ctx),(key)))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__as__functions.html#ga6843c4198839c7e4827349a10a808c0e">rxv_spin_ses_sset</a>(ctx, key, val)&nbsp;&nbsp;&nbsp;rxv_spin_ses_set((ctx),(key),rxv_spin_datum(rxv_spin_pool(ctx),(val),NULL))</td></tr>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__as__functions.html#ga1f8d64988a8f2ac097fb5d0b25891105">rxv_spin_app_get</a> (<a class="el" href="group__rxv__spin__context__functions.html#ga30804b0a2d35ece781c2d23fead40600">rxv_spin_ctx_t</a> *ctx, const char *key)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__as__functions.html#ga55d9b23fb5677f540c1c92e3c2d274ad">rxv_spin_app_set</a> (<a class="el" href="group__rxv__spin__context__functions.html#ga30804b0a2d35ece781c2d23fead40600">rxv_spin_ctx_t</a> *ctx, const char *key, <a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *val)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">apr_status_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__as__functions.html#ga32a6cb4e14d7107cf21a15e64199df21">rxv_spin_app_del</a> (<a class="el" href="group__rxv__spin__context__functions.html#ga30804b0a2d35ece781c2d23fead40600">rxv_spin_ctx_t</a> *ctx, const char *key)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__as__functions.html#gab568a7ef7996b687a042eebbecbd5f49">rxv_spin_ses_get</a> (<a class="el" href="group__rxv__spin__context__functions.html#ga30804b0a2d35ece781c2d23fead40600">rxv_spin_ctx_t</a> *ctx, const char *key)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__as__functions.html#gaf25e64f2c445e68c27da6e3bc440a3a0">rxv_spin_ses_set</a> (<a class="el" href="group__rxv__spin__context__functions.html#ga30804b0a2d35ece781c2d23fead40600">rxv_spin_ctx_t</a> *ctx, const char *key, <a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *val)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">apr_status_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__as__functions.html#ga66a9893b85166b9b4af664d101d8641a">rxv_spin_ses_del</a> (<a class="el" href="group__rxv__spin__context__functions.html#ga30804b0a2d35ece781c2d23fead40600">rxv_spin_ctx_t</a> *ctx, const char *key)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__as__functions.html#ga232aeaea6a8ddab9e2e867fc904bc5f2">rxv_spin_ses_kill</a> (<a class="el" href="group__rxv__spin__context__functions.html#ga30804b0a2d35ece781c2d23fead40600">rxv_spin_ctx_t</a> *ctx)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__as__functions.html#ga5ee27530ce41441f9c1595879ac2eead">rxv_spin_ses_id</a> (<a class="el" href="group__rxv__spin__context__functions.html#ga30804b0a2d35ece781c2d23fead40600">rxv_spin_ctx_t</a> *ctx)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__as__functions.html#ga3ee39ca955f4e49eb0c9ce23744aefc4">rxv_spin_ses_valid</a> (<a class="el" href="group__rxv__spin__context__functions.html#ga30804b0a2d35ece781c2d23fead40600">rxv_spin_ctx_t</a> *ctx)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">apr_time_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__as__functions.html#ga379097005b293ab00b9deca28efe09f8">rxv_spin_ses_atime</a> (<a class="el" href="group__rxv__spin__context__functions.html#ga30804b0a2d35ece781c2d23fead40600">rxv_spin_ctx_t</a> *ctx)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Application and session functions (mod_spin API) </p>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="gab252ba45a32b5a9a3dce0795dd1a7dc8"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_app_sget" ref="gab252ba45a32b5a9a3dce0795dd1a7dc8" args="(ctx, key)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define rxv_spin_app_sget</td>
          <td>(</td>
          <td class="paramtype">ctx, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">key&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;rxv_spin_string(rxv_spin_app_get((ctx),(key)))</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>get a string from application instead of single </p>

</div>
</div>
<a class="anchor" id="ga84a490b3a5e2351ac449d95af5330b0c"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_app_sset" ref="ga84a490b3a5e2351ac449d95af5330b0c" args="(ctx, key, val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define rxv_spin_app_sset</td>
          <td>(</td>
          <td class="paramtype">ctx, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">key, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">val&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;rxv_spin_app_set((ctx),(key),rxv_spin_datum(rxv_spin_pool(ctx),(val),NULL))</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>set string into application instead of single </p>

</div>
</div>
<a class="anchor" id="gab171ef8e730bff3c607dfe5b6906f754"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_ses_sget" ref="gab171ef8e730bff3c607dfe5b6906f754" args="(ctx, key)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define rxv_spin_ses_sget</td>
          <td>(</td>
          <td class="paramtype">ctx, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">key&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;rxv_spin_string(rxv_spin_ses_get((ctx),(key)))</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>get a string from session instead of single </p>

</div>
</div>
<a class="anchor" id="ga6843c4198839c7e4827349a10a808c0e"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_ses_sset" ref="ga6843c4198839c7e4827349a10a808c0e" args="(ctx, key, val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define rxv_spin_ses_sset</td>
          <td>(</td>
          <td class="paramtype">ctx, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">key, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">val&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;rxv_spin_ses_set((ctx),(key),rxv_spin_datum(rxv_spin_pool(ctx),(val),NULL))</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>set string into application instead of single </p>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga1f8d64988a8f2ac097fb5d0b25891105"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_app_get" ref="ga1f8d64988a8f2ac097fb5d0b25891105" args="(rxv_spin_ctx_t *ctx, const char *key)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a>* rxv_spin_app_get </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__context__functions.html#ga30804b0a2d35ece781c2d23fead40600">rxv_spin_ctx_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>key</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Retrieve a value from the application store.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>Context </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>Unique key by which this value is identified </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer to the value, NULL on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__as__functions.html#ga1f8d64988a8f2ac097fb5d0b25891105">rxv_spin_app_get</a>(ctx,<span class="stringliteral">&quot;some application key&quot;</span>);
</pre></div> </dd></dl>

</div>
</div>
<a class="anchor" id="ga55d9b23fb5677f540c1c92e3c2d274ad"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_app_set" ref="ga55d9b23fb5677f540c1c92e3c2d274ad" args="(rxv_spin_ctx_t *ctx, const char *key, rxv_spin_data_t *val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a>* rxv_spin_app_set </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__context__functions.html#ga30804b0a2d35ece781c2d23fead40600">rxv_spin_ctx_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td>
          <td class="paramname"> <em>val</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Put value in the application store.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>Context </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>Unique key by which this value is identified </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>Value to be placed in the store (single) </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer to the value, NULL on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__as__functions.html#ga55d9b23fb5677f540c1c92e3c2d274ad">rxv_spin_app_set</a>(ctx,<span class="stringliteral">&quot;some application key&quot;</span>,
                  <a class="code" href="group__rxv__spin__data__functions.html#ga5709e6032cd99e987aac2f4aa7fef25e">rxv_spin_datum</a>(pool,<span class="stringliteral">&quot;some application value&quot;</span>,NULL));
</pre></div> </dd></dl>
<dl class="warning"><dt><b>Warning:</b></dt><dd>The data set into the application store has to have at least the lifetime of the request. Anything less and the pool used to hold the data may get cleaned before the bucket holding the value gets created. In most cases, this will result in a segfault. </dd></dl>

</div>
</div>
<a class="anchor" id="ga32a6cb4e14d7107cf21a15e64199df21"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_app_del" ref="ga32a6cb4e14d7107cf21a15e64199df21" args="(rxv_spin_ctx_t *ctx, const char *key)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">apr_status_t rxv_spin_app_del </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__context__functions.html#ga30804b0a2d35ece781c2d23fead40600">rxv_spin_ctx_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>key</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Delete a record in the application store.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>Context </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>Unique key by which record is identified </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>APR_SUCCESS on success, otherwise an error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__as__functions.html#ga32a6cb4e14d7107cf21a15e64199df21">rxv_spin_app_del</a>(ctx,<span class="stringliteral">&quot;some application key&quot;</span>);
</pre></div> </dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>It is not an error to delete and non-existent record. </dd></dl>

</div>
</div>
<a class="anchor" id="gab568a7ef7996b687a042eebbecbd5f49"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_ses_get" ref="gab568a7ef7996b687a042eebbecbd5f49" args="(rxv_spin_ctx_t *ctx, const char *key)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a>* rxv_spin_ses_get </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__context__functions.html#ga30804b0a2d35ece781c2d23fead40600">rxv_spin_ctx_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>key</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Retrieve a value from the session store.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>Context </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>Unique key by which this value is identified </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer to the value, NULL on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__as__functions.html#gab568a7ef7996b687a042eebbecbd5f49">rxv_spin_ses_get</a>(ctx,<span class="stringliteral">&quot;some session key&quot;</span>);
</pre></div> </dd></dl>

</div>
</div>
<a class="anchor" id="gaf25e64f2c445e68c27da6e3bc440a3a0"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_ses_set" ref="gaf25e64f2c445e68c27da6e3bc440a3a0" args="(rxv_spin_ctx_t *ctx, const char *key, rxv_spin_data_t *val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a>* rxv_spin_ses_set </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__context__functions.html#ga30804b0a2d35ece781c2d23fead40600">rxv_spin_ctx_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td>
          <td class="paramname"> <em>val</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Put value in the session store.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>Context </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>Unique key by which this value is identified </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>Value to be placed in the store (single) </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer to the value, NULL on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__as__functions.html#gaf25e64f2c445e68c27da6e3bc440a3a0">rxv_spin_ses_set</a>(ctx,<span class="stringliteral">&quot;some session key&quot;</span>,
                  <a class="code" href="group__rxv__spin__data__functions.html#ga5709e6032cd99e987aac2f4aa7fef25e">rxv_spin_datum</a>(pool,<span class="stringliteral">&quot;some session value&quot;</span>,NULL));
</pre></div> </dd></dl>
<dl class="warning"><dt><b>Warning:</b></dt><dd>The data set into the session store has to have at least the lifetime of the request. Anything less and the pool used to hold the data may get cleaned before the bucket holding the value gets created. In most cases, this will result in a segfault. </dd></dl>

</div>
</div>
<a class="anchor" id="ga66a9893b85166b9b4af664d101d8641a"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_ses_del" ref="ga66a9893b85166b9b4af664d101d8641a" args="(rxv_spin_ctx_t *ctx, const char *key)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">apr_status_t rxv_spin_ses_del </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__context__functions.html#ga30804b0a2d35ece781c2d23fead40600">rxv_spin_ctx_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>key</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Delete a record in the session store.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>Context </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>Unique key by which record is identified </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>APR_SUCCESS on success, otherwise an error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__as__functions.html#ga66a9893b85166b9b4af664d101d8641a">rxv_spin_ses_del</a>(ctx,<span class="stringliteral">&quot;some session key&quot;</span>);
</pre></div> </dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>It is not an error to delete and non-existent record. </dd></dl>

</div>
</div>
<a class="anchor" id="ga232aeaea6a8ddab9e2e867fc904bc5f2"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_ses_kill" ref="ga232aeaea6a8ddab9e2e867fc904bc5f2" args="(rxv_spin_ctx_t *ctx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void rxv_spin_ses_kill </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__context__functions.html#ga30804b0a2d35ece781c2d23fead40600">rxv_spin_ctx_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ctx</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Kill the session</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>Context </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__as__functions.html#ga232aeaea6a8ddab9e2e867fc904bc5f2">rxv_spin_ses_kill</a>(ctx);
</pre></div> </dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>Destroys the session by marking session data for removal from the store. Note that session cookie will still get served. This function would usually be used to log users out of the system, as any session data would have to be reestablished once user logs back in. </dd></dl>

</div>
</div>
<a class="anchor" id="ga5ee27530ce41441f9c1595879ac2eead"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_ses_id" ref="ga5ee27530ce41441f9c1595879ac2eead" args="(rxv_spin_ctx_t *ctx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* rxv_spin_ses_id </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__context__functions.html#ga30804b0a2d35ece781c2d23fead40600">rxv_spin_ctx_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ctx</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get session id</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>Context </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Session id or NULL if no session support exists </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__as__functions.html#ga5ee27530ce41441f9c1595879ac2eead">rxv_spin_ses_id</a>(ctx);
</pre></div> </dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>This function fetches a string representation of the session id, which draws is origin from mod_unique_id. If mod_unique_id isn't present in Apache, this function returns NULL. Note that the fact that one can get a session id does not mean that there is a valid session in existence (that is to say, that the client accepted the session). Use <a class="el" href="group__rxv__spin__as__functions.html#ga3ee39ca955f4e49eb0c9ce23744aefc4">rxv_spin_ses_valid()</a> function to find that out. </dd></dl>

</div>
</div>
<a class="anchor" id="ga3ee39ca955f4e49eb0c9ce23744aefc4"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_ses_valid" ref="ga3ee39ca955f4e49eb0c9ce23744aefc4" args="(rxv_spin_ctx_t *ctx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int rxv_spin_ses_valid </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__context__functions.html#ga30804b0a2d35ece781c2d23fead40600">rxv_spin_ctx_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ctx</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Find out if the session is valid.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>Context </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 if valid, otherwise 0 </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__as__functions.html#ga3ee39ca955f4e49eb0c9ce23744aefc4">rxv_spin_ses_valid</a>(ctx);
</pre></div> </dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>If the client accepted this session, this function returns 1. This will only be true if the client submitted a valid session id and its relevant hash to mod_spin. Also, the session will not be considered valid if there are path tricks in the session id (this is unlikely to happen, due to hash checking, but nevertheless). </dd></dl>

</div>
</div>
<a class="anchor" id="ga379097005b293ab00b9deca28efe09f8"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_ses_atime" ref="ga379097005b293ab00b9deca28efe09f8" args="(rxv_spin_ctx_t *ctx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">apr_time_t rxv_spin_ses_atime </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__context__functions.html#ga30804b0a2d35ece781c2d23fead40600">rxv_spin_ctx_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ctx</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Last access time for the session.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>Context </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Access time, 0 if session has been killed or on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__as__functions.html#ga379097005b293ab00b9deca28efe09f8">rxv_spin_ses_atime</a>(ctx);
</pre></div> </dd></dl>

</div>
</div>
</div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&nbsp;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&nbsp;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&nbsp;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&nbsp;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&nbsp;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&nbsp;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&nbsp;</span>Defines</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr size="1"/><address style="text-align: right;"><small>Generated on 29 Dec 2009 for mod_spin by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>