Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > f149f58f4a75af135bdb24f5dfe94165 > files > 814

libdap-doc-3.9.3-3mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>libdap++: libdap::HTTPCacheTable Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="classes.html"><span>Class&nbsp;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="namespacelibdap.html">libdap</a>::<a class="el" href="classlibdap_1_1HTTPCacheTable.html">HTTPCacheTable</a>
  </div>
</div>
<div class="contents">
<h1>libdap::HTTPCacheTable Class Reference</h1><!-- doxytag: class="libdap::HTTPCacheTable" --><code>#include &lt;<a class="el" href="HTTPCacheTable_8h_source.html">HTTPCacheTable.h</a>&gt;</code>
<p>
<div class="dynheader">
Collaboration diagram for libdap::HTTPCacheTable:</div>
<div class="dynsection">
<p><center><img src="classlibdap_1_1HTTPCacheTable__coll__graph.png" border="0" usemap="#libdap_1_1HTTPCacheTable__coll__map" alt="Collaboration graph"></center>
<center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center></div>

<p>
<a href="classlibdap_1_1HTTPCacheTable-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a></td></tr>

<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef vector&lt; <a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#36425575bbfac384964ce2f364f15679">CacheEntries</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef CacheEntries::iterator&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#8527d6a5b1e720e2d500e1ec1eeecf9f">CacheEntriesIter</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="classlibdap_1_1HTTPCacheTable.html#36425575bbfac384964ce2f364f15679">CacheEntries</a> **&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#a8e43995c010ac4fae6ca8cc13395930">CacheTable</a></td></tr>

<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#24b2c86910ba623a59184ab42410b4cb">bind_entry_to_data</a> (<a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> *entry, FILE *body)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#0f7f6193848fb3ba8ad17082fd95b6c6">create_hash_directory</a> (int hash)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#0ab52cb3d5d01575977adb33a21b31d2">create_location</a> (<a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> *entry)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#51707b1b5533c2d06e57dc52a0ea90b2">delete_by_hits</a> (int hits)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#04655ab9af621a261420ed8af681cf80">delete_by_size</a> (unsigned int size)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#107d8cc87728a855eaa18210b90c09d5">delete_expired_entries</a> (time_t time=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#03e241526025dfaeb2662f7c15ce1d17">HTTPCacheTable</a> (const string &amp;cache_root, int block_size)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#fc2ef03d687c3db809e2bfbc3bca3bd3">is_locked_read_responses</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#d0ac242f618a804562e18546738904df">uncouple_entry_from_data</a> (FILE *body)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#78d0655261edb7f9ff0b2d61b7f97917">~HTTPCacheTable</a> ()</td></tr>

<tr><td colspan="2"><div class="groupHeader">Cache Index</div></td></tr>
<tr><td colspan="2"><div class="groupText">These methods manage the cache's index file. Each cache holds an index file named <code></code>.index which stores the cache's state information. <br><br></div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#3e636690b069b3384e908135fcaebd51">cache_index_delete</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#48569affedb01e6e0e87343bcc621c0a">cache_index_parse_line</a> (const char *line)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#24e70dae002ffeef9641bb6493109513">cache_index_read</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#7cd5a3a24fd0cd41ac0d9a3192075e9c">cache_index_write</a> ()</td></tr>

<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#0c0cd3182608b1ce1f3b930cf16e6779">get_block_size</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#86f13e699f533ebdfd4e7ca3ef83401d">get_cache_root</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#bb0b2349fafffdd13eea562140083485">get_current_size</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#7a412fb2155e6bcaab3ce15a2d8121a5">get_new_entries</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#f17bd7a96186412f3ef53caed42db767">increment_new_entries</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#3ffe278c93c2d3a0dc2f180fefc6ae3c">set_block_size</a> (unsigned int sz)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#9e6fada9e04ddcf835160780222e9a43">set_cache_root</a> (const string &amp;cr)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#bf4e75cf192355d7c7bfcf9f0e736168">set_current_size</a> (unsigned long sz)</td></tr>

<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#76bd6ce419aad54c8c87e993f5bd11c9">HTTPCacheTest</a></td></tr>

<tr><td colspan="2"><br><h2>Methods to manipulate instances of CacheEntry.</h2></td></tr>
<tr><td colspan="2"><br><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#8f5660848048a98454fce23c28de573c">add_entry_to_cache_table</a> (<a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> *entry)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#0ca63c76e70064549d128ff8f5951534">calculate_time</a> (<a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">HTTPCacheTable::CacheEntry</a> *entry, int default_expiration, time_t request_time)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#d02f9346125f4c311d6e74b6a8354f9e">delete_all_entries</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#c8c8e58c208b8c542b89f500829032a0">get_locked_entry_from_cache_table</a> (const string &amp;url)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#57c01c8b9462f0e0ea6541b7d9fcf2f5">get_write_locked_entry_from_cache_table</a> (const string &amp;url)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#53379f3151fe6b85e85c75c401a14963">parse_headers</a> (<a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">HTTPCacheTable::CacheEntry</a> *entry, unsigned long max_entry_size, const vector&lt; string &gt; &amp;headers)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#85d4438820f0920002f5e77b51900ea9">remove_cache_entry</a> (<a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">HTTPCacheTable::CacheEntry</a> *entry)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibdap_1_1HTTPCacheTable.html#d1b8ffd257ff335b3d87b90600f5bffd">remove_entry_from_cache_table</a> (const string &amp;url)</td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
The table of entires in the client-side cache. This class maintains a table of CacheEntries, and one instance of <a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> is made for each item in the cache. When an item is accessed it is either locked for reading or writing. When locked for reading the entry is recorded on a list of read-locked entries. The caller must explicitly free the entry for it to be removed from this list (which is the only way it can be opended for writing). An entry can be accessed by multiple readers but only one writer.<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>The <a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> class used to contain a lock that was used to ensure that the entry was locked during any changes to any of its fields. That has been removed - its now the responsibility of the caller. This change was made because it's likely the caller will need to lock all of the methods that operate on a <a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> anyway, so the CacheEntry-specific lock was redundant. </dd></dl>

<p>Definition at line <a class="el" href="HTTPCacheTable_8h_source.html#l00081">81</a> of file <a class="el" href="HTTPCacheTable_8h_source.html">HTTPCacheTable.h</a>.</p>
<hr><h2>Member Typedef Documentation</h2>
<a class="anchor" name="36425575bbfac384964ce2f364f15679"></a><!-- doxytag: member="libdap::HTTPCacheTable::CacheEntries" ref="36425575bbfac384964ce2f364f15679" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef vector&lt;<a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> *&gt; <a class="el" href="classlibdap_1_1HTTPCacheTable.html#36425575bbfac384964ce2f364f15679">libdap::HTTPCacheTable::CacheEntries</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="HTTPCacheTable_8h_source.html#l00253">253</a> of file <a class="el" href="HTTPCacheTable_8h_source.html">HTTPCacheTable.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="8527d6a5b1e720e2d500e1ec1eeecf9f"></a><!-- doxytag: member="libdap::HTTPCacheTable::CacheEntriesIter" ref="8527d6a5b1e720e2d500e1ec1eeecf9f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef CacheEntries::iterator <a class="el" href="classlibdap_1_1HTTPCacheTable.html#8527d6a5b1e720e2d500e1ec1eeecf9f">libdap::HTTPCacheTable::CacheEntriesIter</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="HTTPCacheTable_8h_source.html#l00254">254</a> of file <a class="el" href="HTTPCacheTable_8h_source.html">HTTPCacheTable.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="a8e43995c010ac4fae6ca8cc13395930"></a><!-- doxytag: member="libdap::HTTPCacheTable::CacheTable" ref="a8e43995c010ac4fae6ca8cc13395930" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classlibdap_1_1HTTPCacheTable.html#36425575bbfac384964ce2f364f15679">CacheEntries</a>** <a class="el" href="classlibdap_1_1HTTPCacheTable.html#a8e43995c010ac4fae6ca8cc13395930">libdap::HTTPCacheTable::CacheTable</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="HTTPCacheTable_8h_source.html#l00256">256</a> of file <a class="el" href="HTTPCacheTable_8h_source.html">HTTPCacheTable.h</a>.</p>

</div>
</div><p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="03e241526025dfaeb2662f7c15ce1d17"></a><!-- doxytag: member="libdap::HTTPCacheTable::HTTPCacheTable" ref="03e241526025dfaeb2662f7c15ce1d17" args="(const string &amp;cache_root, int block_size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">libdap::HTTPCacheTable::HTTPCacheTable           </td>
          <td>(</td>
          <td class="paramtype">const string &amp;&nbsp;</td>
          <td class="paramname"> <em>cache_root</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>block_size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="HTTPCacheTable_8cc_source.html#l00107">107</a> of file <a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a>.</p>

</div>
</div><p>
<a class="anchor" name="78d0655261edb7f9ff0b2d61b7f97917"></a><!-- doxytag: member="libdap::HTTPCacheTable::~HTTPCacheTable" ref="78d0655261edb7f9ff0b2d61b7f97917" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">libdap::HTTPCacheTable::~HTTPCacheTable           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="HTTPCacheTable_8cc_source.html#l00137">137</a> of file <a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a>.</p>

<p>References <a class="el" href="HTTPCacheTable_8cc_source.html#l00087">CACHE_TABLE_SIZE</a>.</p>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="8f5660848048a98454fce23c28de573c"></a><!-- doxytag: member="libdap::HTTPCacheTable::add_entry_to_cache_table" ref="8f5660848048a98454fce23c28de573c" args="(CacheEntry *entry)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void libdap::HTTPCacheTable::add_entry_to_cache_table           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> *&nbsp;</td>
          <td class="paramname"> <em>entry</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add a <a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> to the cache table. As each entry is read, load it into the in-memory cache table and update the HTTPCache's current_size. The later is used by the garbage collection method.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>entry</em>&nbsp;</td><td>The <a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> instance to add. </td></tr>
  </table>
</dl>

<p>Definition at line <a class="el" href="HTTPCacheTable_8cc_source.html#l00539">539</a> of file <a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00058">DBG</a>, and <a class="el" href="HTTPCacheTable_8h_source.html#l00300">increment_new_entries()</a>.</p>

<p>Referenced by <a class="el" href="HTTPCacheTable_8cc_source.html#l00297">cache_index_read()</a>, and <a class="el" href="HTTPCache_8cc_source.html#l01143">libdap::HTTPCache::cache_response()</a>.</p>

<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="classlibdap_1_1HTTPCacheTable_8f5660848048a98454fce23c28de573c_cgraph.png" border="0" usemap="#classlibdap_1_1HTTPCacheTable_8f5660848048a98454fce23c28de573c_cgraph_map" alt=""></center>
<map name="classlibdap_1_1HTTPCacheTable_8f5660848048a98454fce23c28de573c_cgraph_map">
<area shape="rect" id="node3" href="classlibdap_1_1HTTPCacheTable.html#f17bd7a96186412f3ef53caed42db767" title="libdap::HTTPCacheTable::increment_new_entries" alt="" coords="555,5,1027,32"></map>
</div>

</div>
</div><p>
<a class="anchor" name="24b2c86910ba623a59184ab42410b4cb"></a><!-- doxytag: member="libdap::HTTPCacheTable::bind_entry_to_data" ref="24b2c86910ba623a59184ab42410b4cb" args="(CacheEntry *entry, FILE *body)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void libdap::HTTPCacheTable::bind_entry_to_data           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">HTTPCacheTable::CacheEntry</a> *&nbsp;</td>
          <td class="paramname"> <em>entry</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">FILE *&nbsp;</td>
          <td class="paramname"> <em>body</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="HTTPCacheTable_8cc_source.html#l00837">837</a> of file <a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a>.</p>

<p>Referenced by <a class="el" href="HTTPCache_8cc_source.html#l01494">libdap::HTTPCache::get_cached_response()</a>.</p>

</div>
</div><p>
<a class="anchor" name="3e636690b069b3384e908135fcaebd51"></a><!-- doxytag: member="libdap::HTTPCacheTable::cache_index_delete" ref="3e636690b069b3384e908135fcaebd51" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool libdap::HTTPCacheTable::cache_index_delete           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Remove the cache index file.<p>
A private method.<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the file was deleted, otherwise false. </dd></dl>

<p>Definition at line <a class="el" href="HTTPCacheTable_8cc_source.html#l00281">281</a> of file <a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a>.</p>

<p>References <a class="el" href="HTTPCache_8cc_source.html#l00086">REMOVE</a>.</p>

<p>Referenced by <a class="el" href="HTTPCacheTable_8cc_source.html#l00711">delete_all_entries()</a>.</p>

</div>
</div><p>
<a class="anchor" name="48569affedb01e6e0e87343bcc621c0a"></a><!-- doxytag: member="libdap::HTTPCacheTable::cache_index_parse_line" ref="48569affedb01e6e0e87343bcc621c0a" args="(const char *line)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">HTTPCacheTable::CacheEntry</a> * libdap::HTTPCacheTable::cache_index_parse_line           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>line</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Parse one line of the index file.<p>
A private method.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>line</em>&nbsp;</td><td>A single line from the <code></code>.index file. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>A <a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> initialized with the information from <code>line</code>. </dd></dl>

<p>Definition at line <a class="el" href="HTTPCacheTable_8cc_source.html#l00330">330</a> of file <a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a>.</p>

<p>References <a class="el" href="HTTPCacheTable_8cc_source.html#l00076">CACHE_EMPTY_ETAG</a>, and <a class="el" href="HTTPCache_8h_source.html#l00076">INIT</a>.</p>

<p>Referenced by <a class="el" href="HTTPCacheTable_8cc_source.html#l00297">cache_index_read()</a>.</p>

</div>
</div><p>
<a class="anchor" name="24e70dae002ffeef9641bb6493109513"></a><!-- doxytag: member="libdap::HTTPCacheTable::cache_index_read" ref="24e70dae002ffeef9641bb6493109513" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool libdap::HTTPCacheTable::cache_index_read           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Read the saved set of cached entries from disk. Consistency between the in-memory cache and the index is maintained by only reading the index file when the <a class="el" href="classlibdap_1_1HTTPCache.html">HTTPCache</a> object is created!<p>
A private method.<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True when a cache index was found and read, false otherwise. </dd></dl>

<p>Definition at line <a class="el" href="HTTPCacheTable_8cc_source.html#l00297">297</a> of file <a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a>.</p>

<p>References <a class="el" href="HTTPCacheTable_8cc_source.html#l00539">add_entry_to_cache_table()</a>, <a class="el" href="HTTPCacheTable_8cc_source.html#l00330">cache_index_parse_line()</a>, <a class="el" href="debug_8h_source.html#l00058">DBG</a>, and <a class="el" href="debug_8h_source.html#l00073">DBG2</a>.</p>

<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="classlibdap_1_1HTTPCacheTable_24e70dae002ffeef9641bb6493109513_cgraph.png" border="0" usemap="#classlibdap_1_1HTTPCacheTable_24e70dae002ffeef9641bb6493109513_cgraph_map" alt=""></center>
<map name="classlibdap_1_1HTTPCacheTable_24e70dae002ffeef9641bb6493109513_cgraph_map">
<area shape="rect" id="node3" href="classlibdap_1_1HTTPCacheTable.html#8f5660848048a98454fce23c28de573c" title="libdap::HTTPCacheTable::add_entry_to_cache_table" alt="" coords="475,5,976,32"><area shape="rect" id="node7" href="classlibdap_1_1HTTPCacheTable.html#48569affedb01e6e0e87343bcc621c0a" title="libdap::HTTPCacheTable::cache_index_parse_line" alt="" coords="485,56,965,83"><area shape="rect" id="node5" href="classlibdap_1_1HTTPCacheTable.html#f17bd7a96186412f3ef53caed42db767" title="libdap::HTTPCacheTable::increment_new_entries" alt="" coords="1024,5,1496,32"></map>
</div>

</div>
</div><p>
<a class="anchor" name="7cd5a3a24fd0cd41ac0d9a3192075e9c"></a><!-- doxytag: member="libdap::HTTPCacheTable::cache_index_write" ref="7cd5a3a24fd0cd41ac0d9a3192075e9c" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void libdap::HTTPCacheTable::cache_index_write           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Walk through the list of cached objects and write the cache index file to disk. If the file does not exist, it is created. If the file does exist, it is overwritten. As a side effect, zero the new_entries counter.<p>
A private method.<p>
<dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classlibdap_1_1Error.html" title="A class for error processing.">Error</a></em>&nbsp;</td><td>Thrown if the index file cannot be opened for writing. </td></tr>
  </table>
</dl>
<dl class="note" compact><dt><b>Note:</b></dt><dd>The <a class="el" href="classlibdap_1_1HTTPCache.html">HTTPCache</a> destructor calls this method and silently ignores this exception. </dd></dl>

<p>Definition at line <a class="el" href="HTTPCacheTable_8cc_source.html#l00404">404</a> of file <a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a>.</p>

<p>References <a class="el" href="HTTPCacheTable_8cc_source.html#l00087">CACHE_TABLE_SIZE</a>, and <a class="el" href="debug_8h_source.html#l00058">DBG</a>.</p>

<p>Referenced by <a class="el" href="HTTPCache_8cc_source.html#l01143">libdap::HTTPCache::cache_response()</a>, <a class="el" href="HTTPCache_8cc_source.html#l00766">libdap::HTTPCache::set_max_entry_size()</a>, <a class="el" href="HTTPCache_8cc_source.html#l00717">libdap::HTTPCache::set_max_size()</a>, and <a class="el" href="HTTPCache_8cc_source.html#l00317">libdap::HTTPCache::~HTTPCache()</a>.</p>

</div>
</div><p>
<a class="anchor" name="0ca63c76e70064549d128ff8f5951534"></a><!-- doxytag: member="libdap::HTTPCacheTable::calculate_time" ref="0ca63c76e70064549d128ff8f5951534" args="(HTTPCacheTable::CacheEntry *entry, int default_expiration, time_t request_time)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void libdap::HTTPCacheTable::calculate_time           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">HTTPCacheTable::CacheEntry</a> *&nbsp;</td>
          <td class="paramname"> <em>entry</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>default_expiration</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">time_t&nbsp;</td>
          <td class="paramname"> <em>request_time</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Calculate the corrected_initial_age of the object. We use the time when this function is called as the response_time as this is when we have received the complete response. This may cause a delay if the response header is very big but should not cause any incorrect behavior.<p>
A private method.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>entry</em>&nbsp;</td><td>The <a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> object. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>default_expiration</em>&nbsp;</td><td>The default value of the cached object's expiration time. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>request_time</em>&nbsp;</td><td>When was the request made? I think this value must be passed into the method that calls this method... </td></tr>
  </table>
</dl>

<p>Definition at line <a class="el" href="HTTPCacheTable_8cc_source.html#l00740">740</a> of file <a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00073">DBG2</a>, and <a class="el" href="HTTPCacheTable_8cc_source.html#l00084">LM_EXPIRATION</a>.</p>

<p>Referenced by <a class="el" href="HTTPCache_8cc_source.html#l01143">libdap::HTTPCache::cache_response()</a>, and <a class="el" href="HTTPCache_8cc_source.html#l01312">libdap::HTTPCache::update_response()</a>.</p>

</div>
</div><p>
<a class="anchor" name="0f7f6193848fb3ba8ad17082fd95b6c6"></a><!-- doxytag: member="libdap::HTTPCacheTable::create_hash_directory" ref="0f7f6193848fb3ba8ad17082fd95b6c6" args="(int hash)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">string libdap::HTTPCacheTable::create_hash_directory           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>hash</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create the directory path for cache file. The cache uses a set of directories within d_cache_root to store individual responses. The name of the directory that holds a given response is the value returned by the <a class="el" href="namespacelibdap.html#68a16ef70e29c367dabd3cb5165c386a">get_hash()</a> function (i.e., it's a number). If the directory exists, this method does nothing.<p>
A private method.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>hash</em>&nbsp;</td><td>The hash value (i.e., directory name). An integer between 0 and CACHE_TABLE_SIZE (See <a class="el" href="HTTPCache_8h.html">HTTPCache.h</a>). </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>The pathname to the directory (even if it already existed). </dd></dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classlibdap_1_1Error.html" title="A class for error processing.">Error</a></em>&nbsp;</td><td>Thrown if the directory cannot be created. </td></tr>
  </table>
</dl>

<p>Definition at line <a class="el" href="HTTPCacheTable_8cc_source.html#l00449">449</a> of file <a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00073">DBG2</a>, and <a class="el" href="HTTPCache_8cc_source.html#l00084">MKDIR</a>.</p>

<p>Referenced by <a class="el" href="HTTPCacheTable_8cc_source.html#l00487">create_location()</a>.</p>

</div>
</div><p>
<a class="anchor" name="0ab52cb3d5d01575977adb33a21b31d2"></a><!-- doxytag: member="libdap::HTTPCacheTable::create_location" ref="0ab52cb3d5d01575977adb33a21b31d2" args="(CacheEntry *entry)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void libdap::HTTPCacheTable::create_location           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">HTTPCacheTable::CacheEntry</a> *&nbsp;</td>
          <td class="paramname"> <em>entry</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create the directory for this url (using the hash value from <a class="el" href="namespacelibdap.html#68a16ef70e29c367dabd3cb5165c386a">get_hash()</a>) and a file within that directory to hold the response's information. The cache name and cache_body_fd fields of <code>entry</code> are updated.<p>
mkstemp opens the file it creates, which is a good thing but it makes tracking resources hard for the <a class="el" href="classlibdap_1_1HTTPCache.html">HTTPCache</a> object (because an exception might cause a file descriptor resource leak). So I close that file descriptor here.<p>
A private method.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>entry</em>&nbsp;</td><td>The cache entry object to operate on. </td></tr>
  </table>
</dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classlibdap_1_1Error.html" title="A class for error processing.">Error</a></em>&nbsp;</td><td>If the file for the response's body cannot be created. </td></tr>
  </table>
</dl>

<p>Definition at line <a class="el" href="HTTPCacheTable_8cc_source.html#l00487">487</a> of file <a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a>.</p>

<p>References <a class="el" href="HTTPCacheTable_8cc_source.html#l00449">create_hash_directory()</a>, and <a class="el" href="HTTPCache_8cc_source.html#l00087">MKSTEMP</a>.</p>

<p>Referenced by <a class="el" href="HTTPCache_8cc_source.html#l01143">libdap::HTTPCache::cache_response()</a>.</p>

<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="classlibdap_1_1HTTPCacheTable_0ab52cb3d5d01575977adb33a21b31d2_cgraph.png" border="0" usemap="#classlibdap_1_1HTTPCacheTable_0ab52cb3d5d01575977adb33a21b31d2_cgraph_map" alt=""></center>
<map name="classlibdap_1_1HTTPCacheTable_0ab52cb3d5d01575977adb33a21b31d2_cgraph_map">
<area shape="rect" id="node3" href="classlibdap_1_1HTTPCacheTable.html#0f7f6193848fb3ba8ad17082fd95b6c6" title="libdap::HTTPCacheTable::create_hash_directory" alt="" coords="467,5,939,32"></map>
</div>

</div>
</div><p>
<a class="anchor" name="d02f9346125f4c311d6e74b6a8354f9e"></a><!-- doxytag: member="libdap::HTTPCacheTable::delete_all_entries" ref="d02f9346125f4c311d6e74b6a8354f9e" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void libdap::HTTPCacheTable::delete_all_entries           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="HTTPCacheTable_8cc_source.html#l00711">711</a> of file <a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a>.</p>

<p>References <a class="el" href="HTTPCacheTable_8cc_source.html#l00281">cache_index_delete()</a>, and <a class="el" href="HTTPCacheTable_8cc_source.html#l00087">CACHE_TABLE_SIZE</a>.</p>

<p>Referenced by <a class="el" href="HTTPCache_8cc_source.html#l01612">libdap::HTTPCache::purge_cache()</a>.</p>

<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="classlibdap_1_1HTTPCacheTable_d02f9346125f4c311d6e74b6a8354f9e_cgraph.png" border="0" usemap="#classlibdap_1_1HTTPCacheTable_d02f9346125f4c311d6e74b6a8354f9e_cgraph_map" alt=""></center>
<map name="classlibdap_1_1HTTPCacheTable_d02f9346125f4c311d6e74b6a8354f9e_cgraph_map">
<area shape="rect" id="node3" href="classlibdap_1_1HTTPCacheTable.html#3e636690b069b3384e908135fcaebd51" title="libdap::HTTPCacheTable::cache_index_delete" alt="" coords="497,5,937,32"></map>
</div>

</div>
</div><p>
<a class="anchor" name="51707b1b5533c2d06e57dc52a0ea90b2"></a><!-- doxytag: member="libdap::HTTPCacheTable::delete_by_hits" ref="51707b1b5533c2d06e57dc52a0ea90b2" args="(int hits)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void libdap::HTTPCacheTable::delete_by_hits           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>hits</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="HTTPCacheTable_8cc_source.html#l00219">219</a> of file <a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a>.</p>

<p>References <a class="el" href="HTTPCacheTable_8cc_source.html#l00087">CACHE_TABLE_SIZE</a>.</p>

</div>
</div><p>
<a class="anchor" name="04655ab9af621a261420ed8af681cf80"></a><!-- doxytag: member="libdap::HTTPCacheTable::delete_by_size" ref="04655ab9af621a261420ed8af681cf80" args="(unsigned int size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void libdap::HTTPCacheTable::delete_by_size           </td>
          <td>(</td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>size</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="HTTPCacheTable_8cc_source.html#l00254">254</a> of file <a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a>.</p>

<p>References <a class="el" href="HTTPCacheTable_8cc_source.html#l00087">CACHE_TABLE_SIZE</a>.</p>

</div>
</div><p>
<a class="anchor" name="107d8cc87728a855eaa18210b90c09d5"></a><!-- doxytag: member="libdap::HTTPCacheTable::delete_expired_entries" ref="107d8cc87728a855eaa18210b90c09d5" args="(time_t time=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void libdap::HTTPCacheTable::delete_expired_entries           </td>
          <td>(</td>
          <td class="paramtype">time_t&nbsp;</td>
          <td class="paramname"> <em>time</em> = <code>0</code>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="HTTPCacheTable_8cc_source.html#l00182">182</a> of file <a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a>.</p>

<p>References <a class="el" href="HTTPCacheTable_8cc_source.html#l00087">CACHE_TABLE_SIZE</a>.</p>

</div>
</div><p>
<a class="anchor" name="0c0cd3182608b1ce1f3b930cf16e6779"></a><!-- doxytag: member="libdap::HTTPCacheTable::get_block_size" ref="0c0cd3182608b1ce1f3b930cf16e6779" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int libdap::HTTPCacheTable::get_block_size           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="HTTPCacheTable_8h_source.html#l00296">296</a> of file <a class="el" href="HTTPCacheTable_8h_source.html">HTTPCacheTable.h</a>.</p>

<p>Referenced by <a class="el" href="HTTPCacheTable_8cc_source.html#l00634">remove_cache_entry()</a>.</p>

</div>
</div><p>
<a class="anchor" name="86f13e699f533ebdfd4e7ca3ef83401d"></a><!-- doxytag: member="libdap::HTTPCacheTable::get_cache_root" ref="86f13e699f533ebdfd4e7ca3ef83401d" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">string libdap::HTTPCacheTable::get_cache_root           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="HTTPCacheTable_8h_source.html#l00302">302</a> of file <a class="el" href="HTTPCacheTable_8h_source.html">HTTPCacheTable.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="bb0b2349fafffdd13eea562140083485"></a><!-- doxytag: member="libdap::HTTPCacheTable::get_current_size" ref="bb0b2349fafffdd13eea562140083485" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned long libdap::HTTPCacheTable::get_current_size           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="HTTPCacheTable_8h_source.html#l00293">293</a> of file <a class="el" href="HTTPCacheTable_8h_source.html">HTTPCacheTable.h</a>.</p>

<p>Referenced by <a class="el" href="HTTPCacheTable_8cc_source.html#l00634">remove_cache_entry()</a>.</p>

</div>
</div><p>
<a class="anchor" name="c8c8e58c208b8c542b89f500829032a0"></a><!-- doxytag: member="libdap::HTTPCacheTable::get_locked_entry_from_cache_table" ref="c8c8e58c208b8c542b89f500829032a0" args="(const string &amp;url)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">HTTPCacheTable::CacheEntry</a> * libdap::HTTPCacheTable::get_locked_entry_from_cache_table           </td>
          <td>(</td>
          <td class="paramtype">const string &amp;&nbsp;</td>
          <td class="paramname"> <em>url</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get a pointer to a <a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> from the cache table.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>url</em>&nbsp;</td><td>Look for this URL. </td></tr>
  </table>
</dl>

<p>Definition at line <a class="el" href="HTTPCacheTable_8cc_source.html#l00563">563</a> of file <a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a>.</p>

<p>References <a class="el" href="HTTPCacheTable_8cc_source.html#l00097">libdap::get_hash()</a>.</p>

<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="classlibdap_1_1HTTPCacheTable_c8c8e58c208b8c542b89f500829032a0_cgraph.png" border="0" usemap="#classlibdap_1_1HTTPCacheTable_c8c8e58c208b8c542b89f500829032a0_cgraph_map" alt=""></center>
<map name="classlibdap_1_1HTTPCacheTable_c8c8e58c208b8c542b89f500829032a0_cgraph_map">
<area shape="rect" id="node3" href="namespacelibdap.html#68a16ef70e29c367dabd3cb5165c386a" title="libdap::get_hash" alt="" coords="645,5,827,32"></map>
</div>

</div>
</div><p>
<a class="anchor" name="7a412fb2155e6bcaab3ce15a2d8121a5"></a><!-- doxytag: member="libdap::HTTPCacheTable::get_new_entries" ref="7a412fb2155e6bcaab3ce15a2d8121a5" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int libdap::HTTPCacheTable::get_new_entries           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="HTTPCacheTable_8h_source.html#l00299">299</a> of file <a class="el" href="HTTPCacheTable_8h_source.html">HTTPCacheTable.h</a>.</p>

<p>Referenced by <a class="el" href="HTTPCache_8cc_source.html#l01143">libdap::HTTPCache::cache_response()</a>.</p>

</div>
</div><p>
<a class="anchor" name="57c01c8b9462f0e0ea6541b7d9fcf2f5"></a><!-- doxytag: member="libdap::HTTPCacheTable::get_write_locked_entry_from_cache_table" ref="57c01c8b9462f0e0ea6541b7d9fcf2f5" args="(const string &amp;url)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">HTTPCacheTable::CacheEntry</a> * libdap::HTTPCacheTable::get_write_locked_entry_from_cache_table           </td>
          <td>(</td>
          <td class="paramtype">const string &amp;&nbsp;</td>
          <td class="paramname"> <em>url</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get a pointer to a <a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> from the cache table. Providing a way to pass the hash code into this method makes it easier to test for correct behavior when two entries collide. 10/07/02 jhrg<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>url</em>&nbsp;</td><td>Look for this URL. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>The matching <a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> instance or NULL if none was found. </dd></dl>

<p>Definition at line <a class="el" href="HTTPCacheTable_8cc_source.html#l00605">605</a> of file <a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a>.</p>

<p>References <a class="el" href="HTTPCacheTable_8cc_source.html#l00097">libdap::get_hash()</a>.</p>

<p>Referenced by <a class="el" href="HTTPCache_8cc_source.html#l01312">libdap::HTTPCache::update_response()</a>.</p>

<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="classlibdap_1_1HTTPCacheTable_57c01c8b9462f0e0ea6541b7d9fcf2f5_cgraph.png" border="0" usemap="#classlibdap_1_1HTTPCacheTable_57c01c8b9462f0e0ea6541b7d9fcf2f5_cgraph_map" alt=""></center>
<map name="classlibdap_1_1HTTPCacheTable_57c01c8b9462f0e0ea6541b7d9fcf2f5_cgraph_map">
<area shape="rect" id="node3" href="namespacelibdap.html#68a16ef70e29c367dabd3cb5165c386a" title="libdap::get_hash" alt="" coords="707,5,888,32"></map>
</div>

</div>
</div><p>
<a class="anchor" name="f17bd7a96186412f3ef53caed42db767"></a><!-- doxytag: member="libdap::HTTPCacheTable::increment_new_entries" ref="f17bd7a96186412f3ef53caed42db767" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void libdap::HTTPCacheTable::increment_new_entries           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="HTTPCacheTable_8h_source.html#l00300">300</a> of file <a class="el" href="HTTPCacheTable_8h_source.html">HTTPCacheTable.h</a>.</p>

<p>Referenced by <a class="el" href="HTTPCacheTable_8cc_source.html#l00539">add_entry_to_cache_table()</a>.</p>

</div>
</div><p>
<a class="anchor" name="fc2ef03d687c3db809e2bfbc3bca3bd3"></a><!-- doxytag: member="libdap::HTTPCacheTable::is_locked_read_responses" ref="fc2ef03d687c3db809e2bfbc3bca3bd3" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool libdap::HTTPCacheTable::is_locked_read_responses           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="HTTPCacheTable_8cc_source.html#l00857">857</a> of file <a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a>.</p>

<p>Referenced by <a class="el" href="HTTPCache_8cc_source.html#l01612">libdap::HTTPCache::purge_cache()</a>.</p>

</div>
</div><p>
<a class="anchor" name="53379f3151fe6b85e85c75c401a14963"></a><!-- doxytag: member="libdap::HTTPCacheTable::parse_headers" ref="53379f3151fe6b85e85c75c401a14963" args="(HTTPCacheTable::CacheEntry *entry, unsigned long max_entry_size, const vector&lt; string &gt; &amp;headers)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void libdap::HTTPCacheTable::parse_headers           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">HTTPCacheTable::CacheEntry</a> *&nbsp;</td>
          <td class="paramname"> <em>entry</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned long&nbsp;</td>
          <td class="paramname"> <em>max_entry_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const vector&lt; string &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>headers</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Parse various headers from the vector (which can be retrieved from libcurl once a response is received) and load the <a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> object with values. This method should only be called with headers from a response (it should not be used to parse request headers).<p>
A private method.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>entry</em>&nbsp;</td><td>Store values from the headers here. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>max_entry_size</em>&nbsp;</td><td>DO not cache entries larger than this. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>headers</em>&nbsp;</td><td>A vector of header lines. </td></tr>
  </table>
</dl>

<p>Definition at line <a class="el" href="HTTPCacheTable_8cc_source.html#l00783">783</a> of file <a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a>.</p>

<p>References <a class="el" href="debug_8h_source.html#l00073">DBG2</a>, <a class="el" href="util__mit_8cc_source.html#l00132">libdap::parse_time()</a>, and <a class="el" href="HTTPCacheTable_8h_source.html#l00169">libdap::HTTPCacheTable::CacheEntry::set_no_cache()</a>.</p>

<p>Referenced by <a class="el" href="HTTPCache_8cc_source.html#l01143">libdap::HTTPCache::cache_response()</a>, and <a class="el" href="HTTPCache_8cc_source.html#l01312">libdap::HTTPCache::update_response()</a>.</p>

<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="classlibdap_1_1HTTPCacheTable_53379f3151fe6b85e85c75c401a14963_cgraph.png" border="0" usemap="#classlibdap_1_1HTTPCacheTable_53379f3151fe6b85e85c75c401a14963_cgraph_map" alt=""></center>
<map name="classlibdap_1_1HTTPCacheTable_53379f3151fe6b85e85c75c401a14963_cgraph_map">
<area shape="rect" id="node3" href="namespacelibdap.html#baf4e1a6a665dbfe9324b25ec9fa701a" title="libdap::parse_time" alt="" coords="596,5,796,32"><area shape="rect" id="node5" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html#112b8ac8aa541ca9a06af7de4d80fc03" title="libdap::HTTPCacheTable::CacheEntry::set_no_cache" alt="" coords="445,56,947,83"></map>
</div>

</div>
</div><p>
<a class="anchor" name="85d4438820f0920002f5e77b51900ea9"></a><!-- doxytag: member="libdap::HTTPCacheTable::remove_cache_entry" ref="85d4438820f0920002f5e77b51900ea9" args="(HTTPCacheTable::CacheEntry *entry)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void libdap::HTTPCacheTable::remove_cache_entry           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">HTTPCacheTable::CacheEntry</a> *&nbsp;</td>
          <td class="paramname"> <em>entry</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Remove a <a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a>. This means delete the entry's files on disk and free the <a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> object. The caller should null the entry's pointer in the cache_table. The total size of the cache is decremented once the entry is deleted.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>entry</em>&nbsp;</td><td>The <a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> to delete. </td></tr>
  </table>
</dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classlibdap_1_1InternalErr.html" title="A class for software fault reporting.">InternalErr</a></em>&nbsp;</td><td>Thrown if <code>entry</code> is in use. </td></tr>
  </table>
</dl>

<p>Definition at line <a class="el" href="HTTPCacheTable_8cc_source.html#l00634">634</a> of file <a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a>.</p>

<p>References <a class="el" href="HTTPCache_8cc_source.html#l00101">CACHE_META</a>, <a class="el" href="debug_8h_source.html#l00058">DBG</a>, <a class="el" href="HTTPCacheTable_8h_source.html#l00296">get_block_size()</a>, <a class="el" href="HTTPCacheTable_8h_source.html#l00293">get_current_size()</a>, <a class="el" href="HTTPCache_8cc_source.html#l00086">REMOVE</a>, and <a class="el" href="HTTPCacheTable_8h_source.html#l00294">set_current_size()</a>.</p>

<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="classlibdap_1_1HTTPCacheTable_85d4438820f0920002f5e77b51900ea9_cgraph.png" border="0" usemap="#classlibdap_1_1HTTPCacheTable_85d4438820f0920002f5e77b51900ea9_cgraph_map" alt=""></center>
<map name="classlibdap_1_1HTTPCacheTable_85d4438820f0920002f5e77b51900ea9_cgraph_map">
<area shape="rect" id="node3" href="classlibdap_1_1HTTPCacheTable.html#0c0cd3182608b1ce1f3b930cf16e6779" title="libdap::HTTPCacheTable::get_block_size" alt="" coords="507,5,907,32"><area shape="rect" id="node5" href="classlibdap_1_1HTTPCacheTable.html#bb0b2349fafffdd13eea562140083485" title="libdap::HTTPCacheTable::get_current_size" alt="" coords="496,56,917,83"><area shape="rect" id="node7" href="classlibdap_1_1HTTPCacheTable.html#bf4e75cf192355d7c7bfcf9f0e736168" title="libdap::HTTPCacheTable::set_current_size" alt="" coords="496,107,917,133"></map>
</div>

</div>
</div><p>
<a class="anchor" name="d1b8ffd257ff335b3d87b90600f5bffd"></a><!-- doxytag: member="libdap::HTTPCacheTable::remove_entry_from_cache_table" ref="d1b8ffd257ff335b3d87b90600f5bffd" args="(const string &amp;url)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void libdap::HTTPCacheTable::remove_entry_from_cache_table           </td>
          <td>(</td>
          <td class="paramtype">const string &amp;&nbsp;</td>
          <td class="paramname"> <em>url</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Find the <a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> for the given url and remove both its information in the persistent store and the entry in d_cache_table. If <code>url</code> is not in the cache, this method does nothing.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>url</em>&nbsp;</td><td>Remove this URL's entry. </td></tr>
  </table>
</dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classlibdap_1_1InternalErr.html" title="A class for software fault reporting.">InternalErr</a></em>&nbsp;</td><td>Thrown if the <a class="el" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html">CacheEntry</a> for <code>url</code> is locked. </td></tr>
  </table>
</dl>

<p>Definition at line <a class="el" href="HTTPCacheTable_8cc_source.html#l00682">682</a> of file <a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a>.</p>

<p>References <a class="el" href="HTTPCacheTable_8cc_source.html#l00097">libdap::get_hash()</a>.</p>

<p>Referenced by <a class="el" href="HTTPCache_8cc_source.html#l01143">libdap::HTTPCache::cache_response()</a>.</p>

<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="classlibdap_1_1HTTPCacheTable_d1b8ffd257ff335b3d87b90600f5bffd_cgraph.png" border="0" usemap="#classlibdap_1_1HTTPCacheTable_d1b8ffd257ff335b3d87b90600f5bffd_cgraph_map" alt=""></center>
<map name="classlibdap_1_1HTTPCacheTable_d1b8ffd257ff335b3d87b90600f5bffd_cgraph_map">
<area shape="rect" id="node3" href="namespacelibdap.html#68a16ef70e29c367dabd3cb5165c386a" title="libdap::get_hash" alt="" coords="605,5,787,32"></map>
</div>

</div>
</div><p>
<a class="anchor" name="3ffe278c93c2d3a0dc2f180fefc6ae3c"></a><!-- doxytag: member="libdap::HTTPCacheTable::set_block_size" ref="3ffe278c93c2d3a0dc2f180fefc6ae3c" args="(unsigned int sz)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void libdap::HTTPCacheTable::set_block_size           </td>
          <td>(</td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>sz</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="HTTPCacheTable_8h_source.html#l00297">297</a> of file <a class="el" href="HTTPCacheTable_8h_source.html">HTTPCacheTable.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="9e6fada9e04ddcf835160780222e9a43"></a><!-- doxytag: member="libdap::HTTPCacheTable::set_cache_root" ref="9e6fada9e04ddcf835160780222e9a43" args="(const string &amp;cr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void libdap::HTTPCacheTable::set_cache_root           </td>
          <td>(</td>
          <td class="paramtype">const string &amp;&nbsp;</td>
          <td class="paramname"> <em>cr</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="HTTPCacheTable_8h_source.html#l00303">303</a> of file <a class="el" href="HTTPCacheTable_8h_source.html">HTTPCacheTable.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="bf4e75cf192355d7c7bfcf9f0e736168"></a><!-- doxytag: member="libdap::HTTPCacheTable::set_current_size" ref="bf4e75cf192355d7c7bfcf9f0e736168" args="(unsigned long sz)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void libdap::HTTPCacheTable::set_current_size           </td>
          <td>(</td>
          <td class="paramtype">unsigned long&nbsp;</td>
          <td class="paramname"> <em>sz</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="HTTPCacheTable_8h_source.html#l00294">294</a> of file <a class="el" href="HTTPCacheTable_8h_source.html">HTTPCacheTable.h</a>.</p>

<p>Referenced by <a class="el" href="HTTPCacheTable_8cc_source.html#l00634">remove_cache_entry()</a>.</p>

</div>
</div><p>
<a class="anchor" name="d0ac242f618a804562e18546738904df"></a><!-- doxytag: member="libdap::HTTPCacheTable::uncouple_entry_from_data" ref="d0ac242f618a804562e18546738904df" args="(FILE *body)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void libdap::HTTPCacheTable::uncouple_entry_from_data           </td>
          <td>(</td>
          <td class="paramtype">FILE *&nbsp;</td>
          <td class="paramname"> <em>body</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="HTTPCacheTable_8cc_source.html#l00845">845</a> of file <a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a>.</p>

<p>References <a class="el" href="HTTPCacheTable_8h_source.html#l00198">libdap::HTTPCacheTable::CacheEntry::unlock_read_response()</a>.</p>

<p>Referenced by <a class="el" href="HTTPCache_8cc_source.html#l01584">libdap::HTTPCache::release_cached_response()</a>.</p>

<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="classlibdap_1_1HTTPCacheTable_d0ac242f618a804562e18546738904df_cgraph.png" border="0" usemap="#classlibdap_1_1HTTPCacheTable_d0ac242f618a804562e18546738904df_cgraph_map" alt=""></center>
<map name="classlibdap_1_1HTTPCacheTable_d0ac242f618a804562e18546738904df_cgraph_map">
<area shape="rect" id="node3" href="structlibdap_1_1HTTPCacheTable_1_1CacheEntry.html#e2db6d25b27dd657dd0a2ef553e28246" title="libdap::HTTPCacheTable::CacheEntry::unlock_read_response" alt="" coords="555,5,1136,32"></map>
</div>

</div>
</div><p>
<hr><h2>Friends And Related Function Documentation</h2>
<a class="anchor" name="76bd6ce419aad54c8c87e993f5bd11c9"></a><!-- doxytag: member="libdap::HTTPCacheTable::HTTPCacheTest" ref="76bd6ce419aad54c8c87e993f5bd11c9" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">friend class HTTPCacheTest<code> [friend]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="HTTPCacheTable_8h_source.html#l00258">258</a> of file <a class="el" href="HTTPCacheTable_8h_source.html">HTTPCacheTable.h</a>.</p>

</div>
</div><p>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="HTTPCacheTable_8h_source.html">HTTPCacheTable.h</a><li><a class="el" href="HTTPCacheTable_8cc_source.html">HTTPCacheTable.cc</a></ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Wed Oct 7 19:59:50 2009 for libdap++ by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>