Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 29c369053a983cc5d8c880dc6e0a2237 > files > 1680

libdtn-devel-2.6.0-2mdv2009.1.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>DTN Reference Implementation: prophet::Table 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.8 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="main.html"><span>Main&nbsp;Page</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="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="namespaceprophet.html">prophet</a>::<a class="el" href="classprophet_1_1Table.html">Table</a>
  </div>
</div>
<div class="contents">
<h1>prophet::Table Class Reference</h1><!-- doxytag: class="prophet::Table" -->Container for Prophet nodes (routes and predictability values).  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="Table_8h-source.html">Table.h</a>&gt;</code>
<p>

<p>
<a href="classprophet_1_1Table-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::map&lt; std::string, <br class="typebreak">
<a class="el" href="classprophet_1_1Node.html">Node</a> *, <a class="el" href="structprophet_1_1less__string.html">less_string</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#61e183b12e68330a58e18612fb338453">rib_table</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::map&lt; std::string, <br class="typebreak">
<a class="el" href="classprophet_1_1Node.html">Node</a> *, <a class="el" href="structprophet_1_1less__string.html">less_string</a> &gt;<br class="typebreak">
::<a class="el" href="classprophet_1_1Table.html#a2f4bc33f615e318215dc60b48447a5d">const_iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#a2f4bc33f615e318215dc60b48447a5d">const_iterator</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::vector&lt; <a class="el" href="classprophet_1_1Node.html">Node</a> * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#3496fbd02c38d1cfd3ada72eab2b3a36">Sequence</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef Sequence::const_iterator&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#3ab8a6980a2697bb807263c6163f761e">heap_iterator</a></td></tr>

<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#ce73a48d847fc6b7ad291ec82bd6c80b">Table</a> (<a class="el" href="classprophet_1_1BundleCore.html">BundleCore</a> *core, const std::string &amp;name, <a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> persistent=false)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor.  <a href="#ce73a48d847fc6b7ad291ec82bd6c80b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#39a5d9198b9829f45d2aaf128b93ebd4">Table</a> (const <a class="el" href="classprophet_1_1Table.html">Table</a> &amp;t)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy constructor.  <a href="#39a5d9198b9829f45d2aaf128b93ebd4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#d530eae364964bb99f44582d5dc2e06f">~Table</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor.  <a href="#d530eae364964bb99f44582d5dc2e06f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classprophet_1_1Node.html">Node</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#b3c3698e75794320979428537a37cdef">find</a> (const std::string &amp;dest_id) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find and return route for given destination ID; else return NULL.  <a href="#b3c3698e75794320979428537a37cdef"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#8dbc9e921c25d19231b5efe7772cd048">update</a> (<a class="el" href="classprophet_1_1Node.html">Node</a> *n)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classprophet_1_1Table.html" title="Container for Prophet nodes (routes and predictability values).">Table</a> takes ownership of memory pointed to by Node*, updating its member list (replacing element if n-&gt;dest_id() already exists).  <a href="#8dbc9e921c25d19231b5efe7772cd048"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#61c5ad124e1840280fd0655356fcb30f">update_route</a> (const std::string &amp;dest_id, <a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> relay=<a class="el" href="classprophet_1_1Node.html#001f6d13d658e508a4a065d689b74fe3">Node::DEFAULT_RELAY</a>, <a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> <a class="el" href="dtnperf-client_8c.html#160881851a33309c0106503ac4d14d96">custody</a>=<a class="el" href="classprophet_1_1Node.html#8c16b001d6a0028ccec12540d4348203">Node::DEFAULT_CUSTODY</a>, <a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> internet=<a class="el" href="classprophet_1_1Node.html#9a789b306d56aa744100b7b7cbca2937">Node::DEFAULT_INTERNET</a>)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenience function for updating directly-encountered route in table.  <a href="#61c5ad124e1840280fd0655356fcb30f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#20cab4c11590a5904a541e59b03fc337">update_transitive</a> (const std::string &amp;dest_id, const std::string &amp;peer_id, double peer_pvalue, <a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> relay=<a class="el" href="classprophet_1_1Node.html#001f6d13d658e508a4a065d689b74fe3">Node::DEFAULT_RELAY</a>, <a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> <a class="el" href="dtnperf-client_8c.html#160881851a33309c0106503ac4d14d96">custody</a>=<a class="el" href="classprophet_1_1Node.html#8c16b001d6a0028ccec12540d4348203">Node::DEFAULT_CUSTODY</a>, <a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> internet=<a class="el" href="classprophet_1_1Node.html#9a789b306d56aa744100b7b7cbca2937">Node::DEFAULT_INTERNET</a>)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenience function for updating transitively-discovered route in table.  <a href="#20cab4c11590a5904a541e59b03fc337"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#430acd99e90a37ff64415038921ca436">update_transitive</a> (const std::string &amp;peer_id, const <a class="el" href="classprophet_1_1PointerList.html">RIBNodeList</a> &amp;nodes, const <a class="el" href="classprophet_1_1Dictionary.html">Dictionary</a> &amp;ribd)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenience wrapper around update_transitive to import entire RIB.  <a href="#430acd99e90a37ff64415038921ca436"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#0660932fcdaa4a5ebc21d6f7e54c7ebe">p_value</a> (const std::string &amp;dest_id) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenience function for looking up predictability of a given route.  <a href="#0660932fcdaa4a5ebc21d6f7e54c7ebe"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#4be56a2157f7d7e8ba44548dde2c6a8f">p_value</a> (const <a class="el" href="classprophet_1_1Bundle.html">Bundle</a> *b) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenience function for lookup of predictability of route to b's dest.  <a href="#4be56a2157f7d7e8ba44548dde2c6a8f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#97dbc037ee1b0e167d97b995cf8b7659">clone</a> (<a class="el" href="classprophet_1_1PointerList.html">NodeList</a> &amp;list) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create duplicate list of Nodes, return number of elements.  <a href="#97dbc037ee1b0e167d97b995cf8b7659"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#6015bdbbb40a5eeebd4ac0ecbed529ab">size</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns number of routes held by <a class="el" href="classprophet_1_1Table.html" title="Container for Prophet nodes (routes and predictability values).">Table</a>.  <a href="#6015bdbbb40a5eeebd4ac0ecbed529ab"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#342217d624bc8e7efdeaadd035ce994f">set_max_route</a> (u_int max_route)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set upper limit on number of routes retained by <a class="el" href="classprophet_1_1Table.html" title="Container for Prophet nodes (routes and predictability values).">Table</a>.  <a href="#342217d624bc8e7efdeaadd035ce994f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#4bde73fe9f4a477a42619e805e9a4508">truncate</a> (double epsilon)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The predictability of Nodes should diminish with time; to allow for maintenance of routes, the Prophet spec allows for removing routes whose predictability falls below some arbitrary epsilon.  <a href="#4bde73fe9f4a477a42619e805e9a4508"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#d771f3abdf649a941a4c8fbfbe7a0f42">assign</a> (const <a class="el" href="classprophet_1_1PointerList.html">RIBNodeList</a> &amp;list, const <a class="el" href="classprophet_1_1Dictionary.html">Dictionary</a> &amp;ribd)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Update <a class="el" href="classprophet_1_1Table.html" title="Container for Prophet nodes (routes and predictability values).">Table</a> from peer's RIB.  <a href="#d771f3abdf649a941a4c8fbfbe7a0f42"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#aaf205b6912e863602760cda23cc733e">assign</a> (const std::list&lt; const <a class="el" href="classprophet_1_1Node.html">Node</a> * &gt; &amp;list, const <a class="el" href="structprophet_1_1NodeParams.html">NodeParams</a> *params)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Persistent storage interface: clear contents of <a class="el" href="classprophet_1_1Table.html" title="Container for Prophet nodes (routes and predictability values).">Table</a> and assign from deserialization routine.  <a href="#aaf205b6912e863602760cda23cc733e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#0fb8c279c02261f9b600777b6cadd591">age_nodes</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">For maintenance routines, visit each <a class="el" href="classprophet_1_1Node.html" title="Node represents a route to another Prophet node, and as such, tracks destination...">Node</a> in table and invoke its aging algorithm; return the number of Nodes visited.  <a href="#0fb8c279c02261f9b600777b6cadd591"></a><br></td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classprophet_1_1Table.html#a2f4bc33f615e318215dc60b48447a5d">const_iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#07b2a913ef24c75457eca1b197b45849">begin</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Iterators.  <a href="#07b2a913ef24c75457eca1b197b45849"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classprophet_1_1Table.html#a2f4bc33f615e318215dc60b48447a5d">const_iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#c10fc722d1ba82e18acd45df0bc23daf">end</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Iterators.  <a href="#c10fc722d1ba82e18acd45df0bc23daf"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classprophet_1_1Table.html#3ab8a6980a2697bb807263c6163f761e">heap_iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#c754def92cf36f450faba4fb4c2f7c31">heap_begin</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Iterators.  <a href="#c754def92cf36f450faba4fb4c2f7c31"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classprophet_1_1Table.html#3ab8a6980a2697bb807263c6163f761e">heap_iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#ae986acf44fa03a092d76a7348bb106a">heap_end</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Iterators.  <a href="#ae986acf44fa03a092d76a7348bb106a"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Protected Types</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef rib_table::iterator&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#6702f69454bf0cbaa3cfa9007214a43d">iterator</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="classprophet_1_1Heap.html">Heap</a>&lt; <a class="el" href="classprophet_1_1Node.html">Node</a> <br class="typebreak">
*, std::vector&lt; <a class="el" href="classprophet_1_1Node.html">Node</a> * &gt;<br class="typebreak">
, struct <a class="el" href="structprophet_1_1heap__compare.html">heap_compare</a>, struct <br class="typebreak">
<a class="el" href="structprophet_1_1heap__pos.html">heap_pos</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#e40871bf139541587463c8da9cfd8d47">NodeHeap</a></td></tr>

<tr><td colspan="2"><br><h2>Protected 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="classprophet_1_1Table.html#202673f8ec231f35b1e750b8b6430911">heap_add</a> (<a class="el" href="classprophet_1_1Node.html">Node</a> *n)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add route to heap.  <a href="#202673f8ec231f35b1e750b8b6430911"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#e4eedc231c636737a7d1289df4863d6d">heap_del</a> (<a class="el" href="classprophet_1_1Node.html">Node</a> *n)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove node from heap.  <a href="#e4eedc231c636737a7d1289df4863d6d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#a634007d67cd85b12f62166ca4db3cca">enforce_quota</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enforce upper bound by eliminating minimum routes.  <a href="#a634007d67cd85b12f62166ca4db3cca"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#0a9f5c816b36df486f60541bdfbd9157">remove</a> (<a class="el" href="classprophet_1_1Table.html#6702f69454bf0cbaa3cfa9007214a43d">iterator</a> *i)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clean up memory and remove pointer from internal map for this element.  <a href="#0a9f5c816b36df486f60541bdfbd9157"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#5acac2d4bc869643d71266c2ba388015">free</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clean up memory pointed to by each Node*.  <a href="#5acac2d4bc869643d71266c2ba388015"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#c91b4b50f968d566193032f745d8f278">find</a> (const std::string &amp;dest_id, <a class="el" href="classprophet_1_1Table.html#6702f69454bf0cbaa3cfa9007214a43d">iterator</a> *i)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Utility function for finding route by dest_id.  <a href="#c91b4b50f968d566193032f745d8f278"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classprophet_1_1BundleCore.html">BundleCore</a> *const&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#3617981b587cbbd0e3e64afea1e997e0">core_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">facade interface into <a class="el" href="classprophet_1_1Bundle.html" title="Facade interface between Prophet router and host implmentation&#39;s Bundle representation...">Bundle</a> host  <a href="#3617981b587cbbd0e3e64afea1e997e0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classprophet_1_1Table.html#61e183b12e68330a58e18612fb338453">rib_table</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#a48e56087c6a1c4f78b17450a39526bf">table_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Mapped collection of &lt;dest_id,Node*&gt; pairs.  <a href="#a48e56087c6a1c4f78b17450a39526bf"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classprophet_1_1Heap.html">NodeHeap</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#a448d426b276031ddf7cb07c6f4188ce">heap_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Min-heap for quota-enforcement eviction ordering.  <a href="#a448d426b276031ddf7cb07c6f4188ce"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#f8213d41f401d35a14ee320cb92bb6ec">persistent_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">whether to utilize BundleCore's persistent storage interface for Nodes  <a href="#f8213d41f401d35a14ee320cb92bb6ec"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#39803a4bfdceda69b153a60415b7a8de">name_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">object name  <a href="#39803a4bfdceda69b153a60415b7a8de"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">u_int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Table.html#66e1a17c87be6dcdb044879b61ce29c5">max_route_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">upper limit to number of routes to retain  <a href="#66e1a17c87be6dcdb044879b61ce29c5"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Container for Prophet nodes (routes and predictability values). 
<p>
Assumes ownership of memory pointed to by member Node*'s 
<p>Definition at line <a class="el" href="Table_8h-source.html#l00057">57</a> of file <a class="el" href="Table_8h-source.html">Table.h</a>.</p>
<hr><h2>Member Typedef Documentation</h2>
<a class="anchor" name="a2f4bc33f615e318215dc60b48447a5d"></a><!-- doxytag: member="prophet::Table::const_iterator" ref="a2f4bc33f615e318215dc60b48447a5d" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef std::map&lt;std::string,<a class="el" href="classprophet_1_1Node.html">Node</a>*,<a class="el" href="structprophet_1_1less__string.html">less_string</a>&gt;::<a class="el" href="classprophet_1_1Table.html#a2f4bc33f615e318215dc60b48447a5d">const_iterator</a> <a class="el" href="classprophet_1_1Table.html#a2f4bc33f615e318215dc60b48447a5d">prophet::Table::const_iterator</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="Table_8h-source.html#l00062">62</a> of file <a class="el" href="Table_8h-source.html">Table.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="3ab8a6980a2697bb807263c6163f761e"></a><!-- doxytag: member="prophet::Table::heap_iterator" ref="3ab8a6980a2697bb807263c6163f761e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef Sequence::const_iterator <a class="el" href="classprophet_1_1Table.html#3ab8a6980a2697bb807263c6163f761e">prophet::Table::heap_iterator</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="Table_8h-source.html#l00064">64</a> of file <a class="el" href="Table_8h-source.html">Table.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="6702f69454bf0cbaa3cfa9007214a43d"></a><!-- doxytag: member="prophet::Table::iterator" ref="6702f69454bf0cbaa3cfa9007214a43d" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef rib_table::iterator <a class="el" href="classprophet_1_1Table.html#6702f69454bf0cbaa3cfa9007214a43d">prophet::Table::iterator</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="Table_8h-source.html#l00192">192</a> of file <a class="el" href="Table_8h-source.html">Table.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="e40871bf139541587463c8da9cfd8d47"></a><!-- doxytag: member="prophet::Table::NodeHeap" ref="e40871bf139541587463c8da9cfd8d47" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classprophet_1_1Heap.html">Heap</a>&lt;<a class="el" href="classprophet_1_1Node.html">Node</a>*, std::vector&lt;<a class="el" href="classprophet_1_1Node.html">Node</a>*&gt;, struct <a class="el" href="structprophet_1_1heap__compare.html">heap_compare</a>, struct <a class="el" href="structprophet_1_1heap__pos.html">heap_pos</a>&gt; <a class="el" href="classprophet_1_1Heap.html">prophet::Table::NodeHeap</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="Table_8h-source.html#l00196">196</a> of file <a class="el" href="Table_8h-source.html">Table.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="61e183b12e68330a58e18612fb338453"></a><!-- doxytag: member="prophet::Table::rib_table" ref="61e183b12e68330a58e18612fb338453" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef std::map&lt;std::string,<a class="el" href="classprophet_1_1Node.html">Node</a>*,<a class="el" href="structprophet_1_1less__string.html">less_string</a>&gt; <a class="el" href="classprophet_1_1Table.html#61e183b12e68330a58e18612fb338453">prophet::Table::rib_table</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="Table_8h-source.html#l00060">60</a> of file <a class="el" href="Table_8h-source.html">Table.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="3496fbd02c38d1cfd3ada72eab2b3a36"></a><!-- doxytag: member="prophet::Table::Sequence" ref="3496fbd02c38d1cfd3ada72eab2b3a36" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef std::vector&lt;<a class="el" href="classprophet_1_1Node.html">Node</a>*&gt; <a class="el" href="classprophet_1_1Table.html#3496fbd02c38d1cfd3ada72eab2b3a36">prophet::Table::Sequence</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="Table_8h-source.html#l00063">63</a> of file <a class="el" href="Table_8h-source.html">Table.h</a>.</p>

</div>
</div><p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="ce73a48d847fc6b7ad291ec82bd6c80b"></a><!-- doxytag: member="prophet::Table::Table" ref="ce73a48d847fc6b7ad291ec82bd6c80b" args="(BundleCore *core, const std::string &amp;name, bool persistent=false)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">prophet::Table::Table           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classprophet_1_1BundleCore.html">BundleCore</a> *&nbsp;</td>
          <td class="paramname"> <em>core</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td>
          <td class="paramname"> <em>persistent</em> = <code>false</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Default constructor. 
<p>

<p>Definition at line <a class="el" href="Table_8cc-source.html#l00029">29</a> of file <a class="el" href="Table_8cc-source.html">Table.cc</a>.</p>

</div>
</div><p>
<a class="anchor" name="39a5d9198b9829f45d2aaf128b93ebd4"></a><!-- doxytag: member="prophet::Table::Table" ref="39a5d9198b9829f45d2aaf128b93ebd4" args="(const Table &amp;t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">prophet::Table::Table           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classprophet_1_1Table.html">Table</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>t</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy constructor. 
<p>

<p>Definition at line <a class="el" href="Table_8cc-source.html#l00036">36</a> of file <a class="el" href="Table_8cc-source.html">Table.cc</a>.</p>

<p>References <a class="el" href="Table_8cc-source.html#l00058">heap_add()</a>, and <a class="el" href="Table_8h-source.html#l00230">table_</a>.</p>

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

<p>
Destructor. 
<p>

<p>Definition at line <a class="el" href="Table_8cc-source.html#l00052">52</a> of file <a class="el" href="Table_8cc-source.html">Table.cc</a>.</p>

<p>References <a class="el" href="Table_8cc-source.html#l00486">free()</a>, and <a class="el" href="Table_8h-source.html#l00230">table_</a>.</p>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="0fb8c279c02261f9b600777b6cadd591"></a><!-- doxytag: member="prophet::Table::age_nodes" ref="0fb8c279c02261f9b600777b6cadd591" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t prophet::Table::age_nodes           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
For maintenance routines, visit each <a class="el" href="classprophet_1_1Node.html" title="Node represents a route to another Prophet node, and as such, tracks destination...">Node</a> in table and invoke its aging algorithm; return the number of Nodes visited. 
<p>

<p>Definition at line <a class="el" href="Table_8cc-source.html#l00424">424</a> of file <a class="el" href="Table_8cc-source.html">Table.cc</a>.</p>

<p>References <a class="el" href="Table_8h-source.html#l00229">core_</a>, <a class="el" href="Table_8cc-source.html#l00058">heap_add()</a>, <a class="el" href="Table_8cc-source.html#l00063">heap_del()</a>, <a class="el" href="BundleCore_8h-source.html#l00182">prophet::BundleCore::LOG_INFO</a>, <a class="el" href="Table_8h-source.html#l00234">name_</a>, <a class="el" href="Table_8h-source.html#l00232">persistent_</a>, <a class="el" href="classprophet_1_1BundleCore.html#b5b505b3d20c6302ae818426cf27f35d">prophet::BundleCore::print_log()</a>, <a class="el" href="Table_8h-source.html#l00230">table_</a>, <a class="el" href="servlib_2prophet_2Node_8cc-source.html#l00122">prophet::Node::update_age()</a>, and <a class="el" href="classprophet_1_1BundleCore.html#9a18d0c8e3f692d4dd7cc81022177933">prophet::BundleCore::update_node()</a>.</p>

<p>Referenced by <a class="el" href="ProphetBundleCore_8cc-source.html#l00314">dtn::ProphetBundleCore::load_prophet_nodes()</a>.</p>

</div>
</div><p>
<a class="anchor" name="aaf205b6912e863602760cda23cc733e"></a><!-- doxytag: member="prophet::Table::assign" ref="aaf205b6912e863602760cda23cc733e" args="(const std::list&lt; const Node * &gt; &amp;list, const NodeParams *params)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void prophet::Table::assign           </td>
          <td>(</td>
          <td class="paramtype">const std::list&lt; const <a class="el" href="classprophet_1_1Node.html">Node</a> * &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structprophet_1_1NodeParams.html">NodeParams</a> *&nbsp;</td>
          <td class="paramname"> <em>params</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Persistent storage interface: clear contents of <a class="el" href="classprophet_1_1Table.html" title="Container for Prophet nodes (routes and predictability values).">Table</a> and assign from deserialization routine. 
<p>

<p>Definition at line <a class="el" href="Table_8cc-source.html#l00401">401</a> of file <a class="el" href="Table_8cc-source.html">Table.cc</a>.</p>

<p>References <a class="el" href="Table_8h-source.html#l00229">core_</a>, <a class="el" href="BundleCore_8h-source.html#l00182">prophet::BundleCore::LOG_INFO</a>, <a class="el" href="Table_8h-source.html#l00234">name_</a>, <a class="el" href="Table_8h-source.html#l00232">persistent_</a>, <a class="el" href="classprophet_1_1BundleCore.html#b5b505b3d20c6302ae818426cf27f35d">prophet::BundleCore::print_log()</a>, <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00175">prophet::Node::set_params()</a>, and <a class="el" href="Table_8cc-source.html#l00112">update()</a>.</p>

</div>
</div><p>
<a class="anchor" name="d771f3abdf649a941a4c8fbfbe7a0f42"></a><!-- doxytag: member="prophet::Table::assign" ref="d771f3abdf649a941a4c8fbfbe7a0f42" args="(const RIBNodeList &amp;list, const Dictionary &amp;ribd)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void prophet::Table::assign           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classprophet_1_1PointerList.html">RIBNodeList</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classprophet_1_1Dictionary.html">Dictionary</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>ribd</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Update <a class="el" href="classprophet_1_1Table.html" title="Container for Prophet nodes (routes and predictability values).">Table</a> from peer's RIB. 
<p>

<p>Definition at line <a class="el" href="Table_8cc-source.html#l00383">383</a> of file <a class="el" href="Table_8cc-source.html">Table.cc</a>.</p>

<p>References <a class="el" href="Table_8h-source.html#l00229">core_</a>, <a class="el" href="prophet_2Dictionary_8cc-source.html#l00035">prophet::Dictionary::find()</a>, <a class="el" href="BundleCore_8h-source.html#l00182">prophet::BundleCore::LOG_INFO</a>, <a class="el" href="Table_8h-source.html#l00234">name_</a>, <a class="el" href="classprophet_1_1BundleCore.html#b5b505b3d20c6302ae818426cf27f35d">prophet::BundleCore::print_log()</a>, <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00170">prophet::Node::set_dest_id()</a>, and <a class="el" href="Table_8cc-source.html#l00112">update()</a>.</p>

<p>Referenced by <a class="el" href="ProphetNodeList_8cc-source.html#l00110">dtn::ProphetNodeList::clone()</a>.</p>

</div>
</div><p>
<a class="anchor" name="07b2a913ef24c75457eca1b197b45849"></a><!-- doxytag: member="prophet::Table::begin" ref="07b2a913ef24c75457eca1b197b45849" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classprophet_1_1Table.html#a2f4bc33f615e318215dc60b48447a5d">const_iterator</a> prophet::Table::begin           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Iterators. 
<p>

<p>Definition at line <a class="el" href="Table_8h-source.html#l00185">185</a> of file <a class="el" href="Table_8h-source.html">Table.h</a>.</p>

<p>References <a class="el" href="Table_8h-source.html#l00230">table_</a>.</p>

</div>
</div><p>
<a class="anchor" name="97dbc037ee1b0e167d97b995cf8b7659"></a><!-- doxytag: member="prophet::Table::clone" ref="97dbc037ee1b0e167d97b995cf8b7659" args="(NodeList &amp;list) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t prophet::Table::clone           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classprophet_1_1PointerList.html">NodeList</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>list</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create duplicate list of Nodes, return number of elements. 
<p>

<p>Definition at line <a class="el" href="Table_8cc-source.html#l00302">302</a> of file <a class="el" href="Table_8cc-source.html">Table.cc</a>.</p>

<p>References <a class="el" href="PointerList_8h-source.html#l00085">prophet::PointerList&lt; T &gt;::clear()</a>, and <a class="el" href="Table_8h-source.html#l00230">table_</a>.</p>

</div>
</div><p>
<a class="anchor" name="c10fc722d1ba82e18acd45df0bc23daf"></a><!-- doxytag: member="prophet::Table::end" ref="c10fc722d1ba82e18acd45df0bc23daf" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classprophet_1_1Table.html#a2f4bc33f615e318215dc60b48447a5d">const_iterator</a> prophet::Table::end           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Iterators. 
<p>

<p>Definition at line <a class="el" href="Table_8h-source.html#l00186">186</a> of file <a class="el" href="Table_8h-source.html">Table.h</a>.</p>

<p>References <a class="el" href="Table_8h-source.html#l00230">table_</a>.</p>

</div>
</div><p>
<a class="anchor" name="a634007d67cd85b12f62166ca4db3cca"></a><!-- doxytag: member="prophet::Table::enforce_quota" ref="a634007d67cd85b12f62166ca4db3cca" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void prophet::Table::enforce_quota           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Enforce upper bound by eliminating minimum routes. 
<p>

<p>Definition at line <a class="el" href="Table_8cc-source.html#l00460">460</a> of file <a class="el" href="Table_8cc-source.html">Table.cc</a>.</p>

<p>References <a class="el" href="Table_8h-source.html#l00229">core_</a>, <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00114">prophet::Node::dest_id()</a>, <a class="el" href="Util_8h-source.html#l00129">prophet::Heap&lt; UnitType, Sequence, Compare, UpdateElem &gt;::empty()</a>, <a class="el" href="Table_8cc-source.html#l00076">find()</a>, <a class="el" href="Table_8h-source.html#l00231">heap_</a>, <a class="el" href="Table_8cc-source.html#l00063">heap_del()</a>, <a class="el" href="BundleCore_8h-source.html#l00182">prophet::BundleCore::LOG_INFO</a>, <a class="el" href="Table_8h-source.html#l00235">max_route_</a>, <a class="el" href="Table_8h-source.html#l00234">name_</a>, <a class="el" href="classprophet_1_1BundleCore.html#b5b505b3d20c6302ae818426cf27f35d">prophet::BundleCore::print_log()</a>, <a class="el" href="Table_8h-source.html#l00230">table_</a>, and <a class="el" href="Util_8h-source.html#l00139">prophet::Heap&lt; UnitType, Sequence, Compare, UpdateElem &gt;::top()</a>.</p>

<p>Referenced by <a class="el" href="Table_8h-source.html#l00148">set_max_route()</a>, <a class="el" href="Table_8cc-source.html#l00112">update()</a>, <a class="el" href="Table_8cc-source.html#l00158">update_route()</a>, and <a class="el" href="Table_8cc-source.html#l00200">update_transitive()</a>.</p>

</div>
</div><p>
<a class="anchor" name="c91b4b50f968d566193032f745d8f278"></a><!-- doxytag: member="prophet::Table::find" ref="c91b4b50f968d566193032f745d8f278" args="(const std::string &amp;dest_id, iterator *i)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> prophet::Table::find           </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>dest_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classprophet_1_1Table.html#6702f69454bf0cbaa3cfa9007214a43d">iterator</a> *&nbsp;</td>
          <td class="paramname"> <em>i</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Utility function for finding route by dest_id. 
<p>

<p>Definition at line <a class="el" href="Table_8cc-source.html#l00496">496</a> of file <a class="el" href="Table_8cc-source.html">Table.cc</a>.</p>

<p>References <a class="el" href="Table_8cc-source.html#l00025">LOG_LT_MIN_LENGTH</a>, <a class="el" href="Table_8cc-source.html#l00023">MIN_LENGTH</a>, and <a class="el" href="Table_8h-source.html#l00230">table_</a>.</p>

</div>
</div><p>
<a class="anchor" name="b3c3698e75794320979428537a37cdef"></a><!-- doxytag: member="prophet::Table::find" ref="b3c3698e75794320979428537a37cdef" args="(const std::string &amp;dest_id) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classprophet_1_1Node.html">Node</a> * prophet::Table::find           </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>dest_id</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Find and return route for given destination ID; else return NULL. 
<p>

<p>Definition at line <a class="el" href="Table_8cc-source.html#l00076">76</a> of file <a class="el" href="Table_8cc-source.html">Table.cc</a>.</p>

<p>References <a class="el" href="Table_8cc-source.html#l00025">LOG_LT_MIN_LENGTH</a>, <a class="el" href="Table_8cc-source.html#l00023">MIN_LENGTH</a>, and <a class="el" href="Table_8h-source.html#l00230">table_</a>.</p>

<p>Referenced by <a class="el" href="Table_8cc-source.html#l00460">enforce_quota()</a>, <a class="el" href="Table_8cc-source.html#l00090">p_value()</a>, <a class="el" href="Table_8cc-source.html#l00320">truncate()</a>, <a class="el" href="Table_8cc-source.html#l00112">update()</a>, <a class="el" href="Table_8cc-source.html#l00158">update_route()</a>, and <a class="el" href="Table_8cc-source.html#l00200">update_transitive()</a>.</p>

</div>
</div><p>
<a class="anchor" name="5acac2d4bc869643d71266c2ba388015"></a><!-- doxytag: member="prophet::Table::free" ref="5acac2d4bc869643d71266c2ba388015" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void prophet::Table::free           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Clean up memory pointed to by each Node*. 
<p>

<p>Definition at line <a class="el" href="Table_8cc-source.html#l00486">486</a> of file <a class="el" href="Table_8cc-source.html">Table.cc</a>.</p>

<p>References <a class="el" href="Table_8cc-source.html#l00063">heap_del()</a>, and <a class="el" href="Table_8h-source.html#l00230">table_</a>.</p>

<p>Referenced by <a class="el" href="Table_8cc-source.html#l00320">truncate()</a>, and <a class="el" href="Table_8cc-source.html#l00052">~Table()</a>.</p>

</div>
</div><p>
<a class="anchor" name="202673f8ec231f35b1e750b8b6430911"></a><!-- doxytag: member="prophet::Table::heap_add" ref="202673f8ec231f35b1e750b8b6430911" args="(Node *n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void prophet::Table::heap_add           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classprophet_1_1Node.html">Node</a> *&nbsp;</td>
          <td class="paramname"> <em>n</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add route to heap. 
<p>

<p>Definition at line <a class="el" href="Table_8cc-source.html#l00058">58</a> of file <a class="el" href="Table_8cc-source.html">Table.cc</a>.</p>

<p>References <a class="el" href="Util_8h-source.html#l00145">prophet::Heap&lt; UnitType, Sequence, Compare, UpdateElem &gt;::add()</a>, and <a class="el" href="Table_8h-source.html#l00231">heap_</a>.</p>

<p>Referenced by <a class="el" href="Table_8cc-source.html#l00424">age_nodes()</a>, <a class="el" href="Table_8cc-source.html#l00036">Table()</a>, <a class="el" href="Table_8cc-source.html#l00112">update()</a>, <a class="el" href="Table_8cc-source.html#l00158">update_route()</a>, and <a class="el" href="Table_8cc-source.html#l00200">update_transitive()</a>.</p>

</div>
</div><p>
<a class="anchor" name="c754def92cf36f450faba4fb4c2f7c31"></a><!-- doxytag: member="prophet::Table::heap_begin" ref="c754def92cf36f450faba4fb4c2f7c31" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classprophet_1_1Table.html#3ab8a6980a2697bb807263c6163f761e">heap_iterator</a> prophet::Table::heap_begin           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Iterators. 
<p>

<p>Definition at line <a class="el" href="Table_8h-source.html#l00187">187</a> of file <a class="el" href="Table_8h-source.html">Table.h</a>.</p>

<p>References <a class="el" href="Table_8h-source.html#l00231">heap_</a>, and <a class="el" href="Util_8h-source.html#l00172">prophet::Heap&lt; UnitType, Sequence, Compare, UpdateElem &gt;::sequence()</a>.</p>

</div>
</div><p>
<a class="anchor" name="e4eedc231c636737a7d1289df4863d6d"></a><!-- doxytag: member="prophet::Table::heap_del" ref="e4eedc231c636737a7d1289df4863d6d" args="(Node *n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void prophet::Table::heap_del           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classprophet_1_1Node.html">Node</a> *&nbsp;</td>
          <td class="paramname"> <em>n</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Remove node from heap. 
<p>

<p>Definition at line <a class="el" href="Table_8cc-source.html#l00063">63</a> of file <a class="el" href="Table_8cc-source.html">Table.cc</a>.</p>

<p>References <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00197">prophet::Node::dest_id_</a>, <a class="el" href="Table_8h-source.html#l00231">heap_</a>, <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00199">prophet::Node::heap_pos_</a>, <a class="el" href="Util_8h-source.html#l00159">prophet::Heap&lt; UnitType, Sequence, Compare, UpdateElem &gt;::remove()</a>, <a class="el" href="Util_8h-source.html#l00172">prophet::Heap&lt; UnitType, Sequence, Compare, UpdateElem &gt;::sequence()</a>, and <a class="el" href="Util_8h-source.html#l00134">prophet::Heap&lt; UnitType, Sequence, Compare, UpdateElem &gt;::size()</a>.</p>

<p>Referenced by <a class="el" href="Table_8cc-source.html#l00424">age_nodes()</a>, <a class="el" href="Table_8cc-source.html#l00460">enforce_quota()</a>, <a class="el" href="Table_8cc-source.html#l00486">free()</a>, <a class="el" href="Table_8cc-source.html#l00448">remove()</a>, <a class="el" href="Table_8cc-source.html#l00112">update()</a>, <a class="el" href="Table_8cc-source.html#l00158">update_route()</a>, and <a class="el" href="Table_8cc-source.html#l00200">update_transitive()</a>.</p>

</div>
</div><p>
<a class="anchor" name="ae986acf44fa03a092d76a7348bb106a"></a><!-- doxytag: member="prophet::Table::heap_end" ref="ae986acf44fa03a092d76a7348bb106a" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classprophet_1_1Table.html#3ab8a6980a2697bb807263c6163f761e">heap_iterator</a> prophet::Table::heap_end           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Iterators. 
<p>

<p>Definition at line <a class="el" href="Table_8h-source.html#l00188">188</a> of file <a class="el" href="Table_8h-source.html">Table.h</a>.</p>

<p>References <a class="el" href="Table_8h-source.html#l00231">heap_</a>, and <a class="el" href="Util_8h-source.html#l00172">prophet::Heap&lt; UnitType, Sequence, Compare, UpdateElem &gt;::sequence()</a>.</p>

</div>
</div><p>
<a class="anchor" name="4be56a2157f7d7e8ba44548dde2c6a8f"></a><!-- doxytag: member="prophet::Table::p_value" ref="4be56a2157f7d7e8ba44548dde2c6a8f" args="(const Bundle *b) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double prophet::Table::p_value           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classprophet_1_1Bundle.html">Bundle</a> *&nbsp;</td>
          <td class="paramname"> <em>b</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convenience function for lookup of predictability of route to b's dest. 
<p>

<p>Definition at line <a class="el" href="Table_8cc-source.html#l00100">100</a> of file <a class="el" href="Table_8cc-source.html">Table.cc</a>.</p>

<p>References <a class="el" href="Table_8h-source.html#l00229">core_</a>, <a class="el" href="classprophet_1_1Bundle.html#81f0a95589809a157829bacb4d3c5989">prophet::Bundle::destination_id()</a>, <a class="el" href="Table_8cc-source.html#l00076">find()</a>, <a class="el" href="classprophet_1_1BundleCore.html#5ee789c3c5a49bbcb0624658e7f524c6">prophet::BundleCore::get_route()</a>, and <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00110">prophet::Node::p_value()</a>.</p>

</div>
</div><p>
<a class="anchor" name="0660932fcdaa4a5ebc21d6f7e54c7ebe"></a><!-- doxytag: member="prophet::Table::p_value" ref="0660932fcdaa4a5ebc21d6f7e54c7ebe" args="(const std::string &amp;dest_id) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double prophet::Table::p_value           </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>dest_id</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convenience function for looking up predictability of a given route. 
<p>

<p>Definition at line <a class="el" href="Table_8cc-source.html#l00090">90</a> of file <a class="el" href="Table_8cc-source.html">Table.cc</a>.</p>

<p>References <a class="el" href="Table_8cc-source.html#l00076">find()</a>, and <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00110">prophet::Node::p_value()</a>.</p>

<p>Referenced by <a class="el" href="QueuePolicy_8h-source.html#l00325">prophet::QueueCompLEPR::operator()()</a>, <a class="el" href="FwdStrategy_8h-source.html#l00173">prophet::FwdStrategyCompGRTRMAX::operator()()</a>, <a class="el" href="FwdStrategy_8h-source.html#l00137">prophet::FwdStrategyCompGRTRSORT::operator()()</a>, and <a class="el" href="Table_8cc-source.html#l00200">update_transitive()</a>.</p>

</div>
</div><p>
<a class="anchor" name="0a9f5c816b36df486f60541bdfbd9157"></a><!-- doxytag: member="prophet::Table::remove" ref="0a9f5c816b36df486f60541bdfbd9157" args="(iterator *i)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void prophet::Table::remove           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classprophet_1_1Table.html#6702f69454bf0cbaa3cfa9007214a43d">iterator</a> *&nbsp;</td>
          <td class="paramname"> <em>i</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Clean up memory and remove pointer from internal map for this element. 
<p>

<p>Definition at line <a class="el" href="Table_8cc-source.html#l00448">448</a> of file <a class="el" href="Table_8cc-source.html">Table.cc</a>.</p>

<p>References <a class="el" href="Table_8h-source.html#l00229">core_</a>, <a class="el" href="classprophet_1_1BundleCore.html#e799b610b984ebd900dcf1c0bb9e9afc">prophet::BundleCore::delete_node()</a>, <a class="el" href="Table_8cc-source.html#l00063">heap_del()</a>, <a class="el" href="Table_8h-source.html#l00232">persistent_</a>, and <a class="el" href="Table_8h-source.html#l00230">table_</a>.</p>

</div>
</div><p>
<a class="anchor" name="342217d624bc8e7efdeaadd035ce994f"></a><!-- doxytag: member="prophet::Table::set_max_route" ref="342217d624bc8e7efdeaadd035ce994f" args="(u_int max_route)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void prophet::Table::set_max_route           </td>
          <td>(</td>
          <td class="paramtype">u_int&nbsp;</td>
          <td class="paramname"> <em>max_route</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set upper limit on number of routes retained by <a class="el" href="classprophet_1_1Table.html" title="Container for Prophet nodes (routes and predictability values).">Table</a>. 
<p>

<p>Definition at line <a class="el" href="Table_8h-source.html#l00148">148</a> of file <a class="el" href="Table_8h-source.html">Table.h</a>.</p>

<p>References <a class="el" href="Table_8cc-source.html#l00460">enforce_quota()</a>, and <a class="el" href="Table_8h-source.html#l00235">max_route_</a>.</p>

</div>
</div><p>
<a class="anchor" name="6015bdbbb40a5eeebd4ac0ecbed529ab"></a><!-- doxytag: member="prophet::Table::size" ref="6015bdbbb40a5eeebd4ac0ecbed529ab" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t prophet::Table::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>
Returns number of routes held by <a class="el" href="classprophet_1_1Table.html" title="Container for Prophet nodes (routes and predictability values).">Table</a>. 
<p>

<p>Definition at line <a class="el" href="Table_8h-source.html#l00143">143</a> of file <a class="el" href="Table_8h-source.html">Table.h</a>.</p>

<p>References <a class="el" href="Table_8h-source.html#l00230">table_</a>.</p>

</div>
</div><p>
<a class="anchor" name="4bde73fe9f4a477a42619e805e9a4508"></a><!-- doxytag: member="prophet::Table::truncate" ref="4bde73fe9f4a477a42619e805e9a4508" args="(double epsilon)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t prophet::Table::truncate           </td>
          <td>(</td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>epsilon</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The predictability of Nodes should diminish with time; to allow for maintenance of routes, the Prophet spec allows for removing routes whose predictability falls below some arbitrary epsilon. 
<p>
Given epsilon as a minimum predictability, remove all routes whose predictability is below epsilon. Return the number of routes removed. 
<p>Definition at line <a class="el" href="Table_8cc-source.html#l00320">320</a> of file <a class="el" href="Table_8cc-source.html">Table.cc</a>.</p>

<p>References <a class="el" href="Table_8h-source.html#l00229">core_</a>, <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00114">prophet::Node::dest_id()</a>, <a class="el" href="Util_8h-source.html#l00129">prophet::Heap&lt; UnitType, Sequence, Compare, UpdateElem &gt;::empty()</a>, <a class="el" href="Table_8cc-source.html#l00076">find()</a>, <a class="el" href="Table_8cc-source.html#l00486">free()</a>, <a class="el" href="Table_8h-source.html#l00231">heap_</a>, <a class="el" href="BundleCore_8h-source.html#l00182">prophet::BundleCore::LOG_INFO</a>, <a class="el" href="Table_8h-source.html#l00234">name_</a>, <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00110">prophet::Node::p_value()</a>, <a class="el" href="classprophet_1_1BundleCore.html#b5b505b3d20c6302ae818426cf27f35d">prophet::BundleCore::print_log()</a>, <a class="el" href="Util_8h-source.html#l00159">prophet::Heap&lt; UnitType, Sequence, Compare, UpdateElem &gt;::remove()</a>, <a class="el" href="Util_8h-source.html#l00134">prophet::Heap&lt; UnitType, Sequence, Compare, UpdateElem &gt;::size()</a>, <a class="el" href="Table_8h-source.html#l00230">table_</a>, and <a class="el" href="Util_8h-source.html#l00139">prophet::Heap&lt; UnitType, Sequence, Compare, UpdateElem &gt;::top()</a>.</p>

<p>Referenced by <a class="el" href="ProphetBundleCore_8cc-source.html#l00314">dtn::ProphetBundleCore::load_prophet_nodes()</a>.</p>

</div>
</div><p>
<a class="anchor" name="8dbc9e921c25d19231b5efe7772cd048"></a><!-- doxytag: member="prophet::Table::update" ref="8dbc9e921c25d19231b5efe7772cd048" args="(Node *n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void prophet::Table::update           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classprophet_1_1Node.html">Node</a> *&nbsp;</td>
          <td class="paramname"> <em>n</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classprophet_1_1Table.html" title="Container for Prophet nodes (routes and predictability values).">Table</a> takes ownership of memory pointed to by Node*, updating its member list (replacing element if n-&gt;dest_id() already exists). 
<p>

<p>Definition at line <a class="el" href="Table_8cc-source.html#l00112">112</a> of file <a class="el" href="Table_8cc-source.html">Table.cc</a>.</p>

<p>References <a class="el" href="Table_8h-source.html#l00229">core_</a>, <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00114">prophet::Node::dest_id()</a>, <a class="el" href="Table_8cc-source.html#l00460">enforce_quota()</a>, <a class="el" href="Table_8cc-source.html#l00076">find()</a>, <a class="el" href="Table_8cc-source.html#l00058">heap_add()</a>, <a class="el" href="Table_8cc-source.html#l00063">heap_del()</a>, <a class="el" href="BundleCore_8h-source.html#l00182">prophet::BundleCore::LOG_INFO</a>, <a class="el" href="Table_8cc-source.html#l00025">LOG_LT_MIN_LENGTH</a>, <a class="el" href="Table_8cc-source.html#l00023">MIN_LENGTH</a>, <a class="el" href="Table_8h-source.html#l00234">name_</a>, <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00110">prophet::Node::p_value()</a>, <a class="el" href="Table_8h-source.html#l00232">persistent_</a>, <a class="el" href="classprophet_1_1BundleCore.html#b5b505b3d20c6302ae818426cf27f35d">prophet::BundleCore::print_log()</a>, <a class="el" href="Table_8h-source.html#l00230">table_</a>, and <a class="el" href="classprophet_1_1BundleCore.html#9a18d0c8e3f692d4dd7cc81022177933">prophet::BundleCore::update_node()</a>.</p>

<p>Referenced by <a class="el" href="Table_8cc-source.html#l00383">assign()</a>.</p>

</div>
</div><p>
<a class="anchor" name="61c5ad124e1840280fd0655356fcb30f"></a><!-- doxytag: member="prophet::Table::update_route" ref="61c5ad124e1840280fd0655356fcb30f" args="(const std::string &amp;dest_id, bool relay=Node::DEFAULT_RELAY, bool custody=Node::DEFAULT_CUSTODY, bool internet=Node::DEFAULT_INTERNET)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void prophet::Table::update_route           </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>dest_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td>
          <td class="paramname"> <em>relay</em> = <code><a class="el" href="classprophet_1_1Node.html#001f6d13d658e508a4a065d689b74fe3">Node::DEFAULT_RELAY</a></code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td>
          <td class="paramname"> <em>custody</em> = <code><a class="el" href="classprophet_1_1Node.html#8c16b001d6a0028ccec12540d4348203">Node::DEFAULT_CUSTODY</a></code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td>
          <td class="paramname"> <em>internet</em> = <code><a class="el" href="classprophet_1_1Node.html#9a789b306d56aa744100b7b7cbca2937">Node::DEFAULT_INTERNET</a></code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convenience function for updating directly-encountered route in table. 
<p>
Adds new node to table, or updates if route already exists. On success, post-condition is that update_pvalue is called on the node, then the node is updated in <a class="el" href="classprophet_1_1Table.html" title="Container for Prophet nodes (routes and predictability values).">Table</a>. 
<p>Definition at line <a class="el" href="Table_8cc-source.html#l00158">158</a> of file <a class="el" href="Table_8cc-source.html">Table.cc</a>.</p>

<p>References <a class="el" href="Table_8h-source.html#l00229">core_</a>, <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00114">prophet::Node::dest_id()</a>, <a class="el" href="Table_8cc-source.html#l00460">enforce_quota()</a>, <a class="el" href="Table_8cc-source.html#l00076">find()</a>, <a class="el" href="Table_8cc-source.html#l00058">heap_add()</a>, <a class="el" href="Table_8cc-source.html#l00063">heap_del()</a>, <a class="el" href="BundleCore_8h-source.html#l00182">prophet::BundleCore::LOG_INFO</a>, <a class="el" href="Table_8cc-source.html#l00025">LOG_LT_MIN_LENGTH</a>, <a class="el" href="Table_8cc-source.html#l00023">MIN_LENGTH</a>, <a class="el" href="Table_8h-source.html#l00234">name_</a>, <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00110">prophet::Node::p_value()</a>, <a class="el" href="Table_8h-source.html#l00232">persistent_</a>, <a class="el" href="classprophet_1_1BundleCore.html#b5b505b3d20c6302ae818426cf27f35d">prophet::BundleCore::print_log()</a>, <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00168">prophet::Node::set_custody()</a>, <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00169">prophet::Node::set_internet_gw()</a>, <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00167">prophet::Node::set_relay()</a>, <a class="el" href="Table_8h-source.html#l00230">table_</a>, <a class="el" href="classprophet_1_1BundleCore.html#9a18d0c8e3f692d4dd7cc81022177933">prophet::BundleCore::update_node()</a>, and <a class="el" href="servlib_2prophet_2Node_8cc-source.html#l00084">prophet::Node::update_pvalue()</a>.</p>

</div>
</div><p>
<a class="anchor" name="430acd99e90a37ff64415038921ca436"></a><!-- doxytag: member="prophet::Table::update_transitive" ref="430acd99e90a37ff64415038921ca436" args="(const std::string &amp;peer_id, const RIBNodeList &amp;nodes, const Dictionary &amp;ribd)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void prophet::Table::update_transitive           </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>peer_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classprophet_1_1PointerList.html">RIBNodeList</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>nodes</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classprophet_1_1Dictionary.html">Dictionary</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>ribd</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convenience wrapper around update_transitive to import entire RIB. 
<p>

<p>Definition at line <a class="el" href="Table_8cc-source.html#l00244">244</a> of file <a class="el" href="Table_8cc-source.html">Table.cc</a>.</p>

<p>References <a class="el" href="Table_8h-source.html#l00229">core_</a>, <a class="el" href="Table_8cc-source.html#l00460">enforce_quota()</a>, <a class="el" href="Table_8cc-source.html#l00076">find()</a>, <a class="el" href="prophet_2Dictionary_8cc-source.html#l00035">prophet::Dictionary::find()</a>, <a class="el" href="Table_8cc-source.html#l00058">heap_add()</a>, <a class="el" href="Table_8cc-source.html#l00063">heap_del()</a>, <a class="el" href="prophet_2Dictionary_8h-source.html#l00043">prophet::Dictionary::INVALID_SID</a>, <a class="el" href="BundleCore_8h-source.html#l00182">prophet::BundleCore::LOG_INFO</a>, <a class="el" href="Table_8cc-source.html#l00025">LOG_LT_MIN_LENGTH</a>, <a class="el" href="Table_8cc-source.html#l00023">MIN_LENGTH</a>, <a class="el" href="Table_8h-source.html#l00234">name_</a>, <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00110">prophet::Node::p_value()</a>, <a class="el" href="Table_8cc-source.html#l00090">p_value()</a>, <a class="el" href="Table_8h-source.html#l00232">persistent_</a>, <a class="el" href="classprophet_1_1BundleCore.html#b5b505b3d20c6302ae818426cf27f35d">prophet::BundleCore::print_log()</a>, <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00168">prophet::Node::set_custody()</a>, <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00169">prophet::Node::set_internet_gw()</a>, <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00167">prophet::Node::set_relay()</a>, <a class="el" href="Table_8h-source.html#l00230">table_</a>, <a class="el" href="classprophet_1_1BundleCore.html#9a18d0c8e3f692d4dd7cc81022177933">prophet::BundleCore::update_node()</a>, and <a class="el" href="servlib_2prophet_2Node_8cc-source.html#l00101">prophet::Node::update_transitive()</a>.</p>

</div>
</div><p>
<a class="anchor" name="20cab4c11590a5904a541e59b03fc337"></a><!-- doxytag: member="prophet::Table::update_transitive" ref="20cab4c11590a5904a541e59b03fc337" args="(const std::string &amp;dest_id, const std::string &amp;peer_id, double peer_pvalue, bool relay=Node::DEFAULT_RELAY, bool custody=Node::DEFAULT_CUSTODY, bool internet=Node::DEFAULT_INTERNET)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void prophet::Table::update_transitive           </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>dest_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>peer_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>peer_pvalue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td>
          <td class="paramname"> <em>relay</em> = <code><a class="el" href="classprophet_1_1Node.html#001f6d13d658e508a4a065d689b74fe3">Node::DEFAULT_RELAY</a></code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td>
          <td class="paramname"> <em>custody</em> = <code><a class="el" href="classprophet_1_1Node.html#8c16b001d6a0028ccec12540d4348203">Node::DEFAULT_CUSTODY</a></code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td>
          <td class="paramname"> <em>internet</em> = <code><a class="el" href="classprophet_1_1Node.html#9a789b306d56aa744100b7b7cbca2937">Node::DEFAULT_INTERNET</a></code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convenience function for updating transitively-discovered route in table. 
<p>
Creates new node, else updates existing. On success, post-condition is update_transitive is called on node, then node is updated in <a class="el" href="classprophet_1_1Table.html" title="Container for Prophet nodes (routes and predictability values).">Table</a>. 
<p>Definition at line <a class="el" href="Table_8cc-source.html#l00200">200</a> of file <a class="el" href="Table_8cc-source.html">Table.cc</a>.</p>

<p>References <a class="el" href="Table_8h-source.html#l00229">core_</a>, <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00114">prophet::Node::dest_id()</a>, <a class="el" href="Table_8cc-source.html#l00460">enforce_quota()</a>, <a class="el" href="Table_8cc-source.html#l00076">find()</a>, <a class="el" href="Table_8cc-source.html#l00058">heap_add()</a>, <a class="el" href="Table_8cc-source.html#l00063">heap_del()</a>, <a class="el" href="BundleCore_8h-source.html#l00182">prophet::BundleCore::LOG_INFO</a>, <a class="el" href="Table_8cc-source.html#l00025">LOG_LT_MIN_LENGTH</a>, <a class="el" href="Table_8cc-source.html#l00023">MIN_LENGTH</a>, <a class="el" href="Table_8h-source.html#l00234">name_</a>, <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00110">prophet::Node::p_value()</a>, <a class="el" href="Table_8cc-source.html#l00090">p_value()</a>, <a class="el" href="Table_8h-source.html#l00232">persistent_</a>, <a class="el" href="classprophet_1_1BundleCore.html#b5b505b3d20c6302ae818426cf27f35d">prophet::BundleCore::print_log()</a>, <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00168">prophet::Node::set_custody()</a>, <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00169">prophet::Node::set_internet_gw()</a>, <a class="el" href="servlib_2prophet_2Node_8h-source.html#l00167">prophet::Node::set_relay()</a>, <a class="el" href="Table_8h-source.html#l00230">table_</a>, <a class="el" href="classprophet_1_1BundleCore.html#9a18d0c8e3f692d4dd7cc81022177933">prophet::BundleCore::update_node()</a>, and <a class="el" href="servlib_2prophet_2Node_8cc-source.html#l00101">prophet::Node::update_transitive()</a>.</p>

</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="3617981b587cbbd0e3e64afea1e997e0"></a><!-- doxytag: member="prophet::Table::core_" ref="3617981b587cbbd0e3e64afea1e997e0" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classprophet_1_1BundleCore.html">BundleCore</a>* const <a class="el" href="classprophet_1_1Table.html#3617981b587cbbd0e3e64afea1e997e0">prophet::Table::core_</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
facade interface into <a class="el" href="classprophet_1_1Bundle.html" title="Facade interface between Prophet router and host implmentation&#39;s Bundle representation...">Bundle</a> host 
<p>

<p>Definition at line <a class="el" href="Table_8h-source.html#l00229">229</a> of file <a class="el" href="Table_8h-source.html">Table.h</a>.</p>

<p>Referenced by <a class="el" href="Table_8cc-source.html#l00424">age_nodes()</a>, <a class="el" href="Table_8cc-source.html#l00383">assign()</a>, <a class="el" href="Table_8cc-source.html#l00460">enforce_quota()</a>, <a class="el" href="Table_8cc-source.html#l00100">p_value()</a>, <a class="el" href="Table_8cc-source.html#l00448">remove()</a>, <a class="el" href="Table_8cc-source.html#l00320">truncate()</a>, <a class="el" href="Table_8cc-source.html#l00112">update()</a>, <a class="el" href="Table_8cc-source.html#l00158">update_route()</a>, and <a class="el" href="Table_8cc-source.html#l00200">update_transitive()</a>.</p>

</div>
</div><p>
<a class="anchor" name="a448d426b276031ddf7cb07c6f4188ce"></a><!-- doxytag: member="prophet::Table::heap_" ref="a448d426b276031ddf7cb07c6f4188ce" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classprophet_1_1Heap.html">NodeHeap</a> <a class="el" href="classprophet_1_1Table.html#a448d426b276031ddf7cb07c6f4188ce">prophet::Table::heap_</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Min-heap for quota-enforcement eviction ordering. 
<p>

<p>Definition at line <a class="el" href="Table_8h-source.html#l00231">231</a> of file <a class="el" href="Table_8h-source.html">Table.h</a>.</p>

<p>Referenced by <a class="el" href="Table_8cc-source.html#l00460">enforce_quota()</a>, <a class="el" href="Table_8cc-source.html#l00058">heap_add()</a>, <a class="el" href="Table_8h-source.html#l00187">heap_begin()</a>, <a class="el" href="Table_8cc-source.html#l00063">heap_del()</a>, <a class="el" href="Table_8h-source.html#l00188">heap_end()</a>, and <a class="el" href="Table_8cc-source.html#l00320">truncate()</a>.</p>

</div>
</div><p>
<a class="anchor" name="66e1a17c87be6dcdb044879b61ce29c5"></a><!-- doxytag: member="prophet::Table::max_route_" ref="66e1a17c87be6dcdb044879b61ce29c5" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u_int <a class="el" href="classprophet_1_1Table.html#66e1a17c87be6dcdb044879b61ce29c5">prophet::Table::max_route_</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
upper limit to number of routes to retain 
<p>

<p>Definition at line <a class="el" href="Table_8h-source.html#l00235">235</a> of file <a class="el" href="Table_8h-source.html">Table.h</a>.</p>

<p>Referenced by <a class="el" href="Table_8cc-source.html#l00460">enforce_quota()</a>, and <a class="el" href="Table_8h-source.html#l00148">set_max_route()</a>.</p>

</div>
</div><p>
<a class="anchor" name="39803a4bfdceda69b153a60415b7a8de"></a><!-- doxytag: member="prophet::Table::name_" ref="39803a4bfdceda69b153a60415b7a8de" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::string <a class="el" href="classprophet_1_1Table.html#39803a4bfdceda69b153a60415b7a8de">prophet::Table::name_</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
object name 
<p>

<p>Definition at line <a class="el" href="Table_8h-source.html#l00234">234</a> of file <a class="el" href="Table_8h-source.html">Table.h</a>.</p>

<p>Referenced by <a class="el" href="Table_8cc-source.html#l00424">age_nodes()</a>, <a class="el" href="Table_8cc-source.html#l00383">assign()</a>, <a class="el" href="Table_8cc-source.html#l00460">enforce_quota()</a>, <a class="el" href="Table_8cc-source.html#l00320">truncate()</a>, <a class="el" href="Table_8cc-source.html#l00112">update()</a>, <a class="el" href="Table_8cc-source.html#l00158">update_route()</a>, and <a class="el" href="Table_8cc-source.html#l00200">update_transitive()</a>.</p>

</div>
</div><p>
<a class="anchor" name="f8213d41f401d35a14ee320cb92bb6ec"></a><!-- doxytag: member="prophet::Table::persistent_" ref="f8213d41f401d35a14ee320cb92bb6ec" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> <a class="el" href="classprophet_1_1Table.html#f8213d41f401d35a14ee320cb92bb6ec">prophet::Table::persistent_</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
whether to utilize BundleCore's persistent storage interface for Nodes 
<p>

<p>Definition at line <a class="el" href="Table_8h-source.html#l00232">232</a> of file <a class="el" href="Table_8h-source.html">Table.h</a>.</p>

<p>Referenced by <a class="el" href="Table_8cc-source.html#l00424">age_nodes()</a>, <a class="el" href="Table_8cc-source.html#l00401">assign()</a>, <a class="el" href="Table_8cc-source.html#l00448">remove()</a>, <a class="el" href="Table_8cc-source.html#l00112">update()</a>, <a class="el" href="Table_8cc-source.html#l00158">update_route()</a>, and <a class="el" href="Table_8cc-source.html#l00200">update_transitive()</a>.</p>

</div>
</div><p>
<a class="anchor" name="a48e56087c6a1c4f78b17450a39526bf"></a><!-- doxytag: member="prophet::Table::table_" ref="a48e56087c6a1c4f78b17450a39526bf" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classprophet_1_1Table.html#61e183b12e68330a58e18612fb338453">rib_table</a> <a class="el" href="classprophet_1_1Table.html#a48e56087c6a1c4f78b17450a39526bf">prophet::Table::table_</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Mapped collection of &lt;dest_id,Node*&gt; pairs. 
<p>

<p>Definition at line <a class="el" href="Table_8h-source.html#l00230">230</a> of file <a class="el" href="Table_8h-source.html">Table.h</a>.</p>

<p>Referenced by <a class="el" href="Table_8cc-source.html#l00424">age_nodes()</a>, <a class="el" href="Table_8h-source.html#l00185">begin()</a>, <a class="el" href="Table_8cc-source.html#l00302">clone()</a>, <a class="el" href="Table_8h-source.html#l00186">end()</a>, <a class="el" href="Table_8cc-source.html#l00460">enforce_quota()</a>, <a class="el" href="Table_8cc-source.html#l00076">find()</a>, <a class="el" href="Table_8cc-source.html#l00486">free()</a>, <a class="el" href="Table_8cc-source.html#l00448">remove()</a>, <a class="el" href="Table_8h-source.html#l00143">size()</a>, <a class="el" href="Table_8cc-source.html#l00036">Table()</a>, <a class="el" href="Table_8cc-source.html#l00320">truncate()</a>, <a class="el" href="Table_8cc-source.html#l00112">update()</a>, <a class="el" href="Table_8cc-source.html#l00158">update_route()</a>, <a class="el" href="Table_8cc-source.html#l00200">update_transitive()</a>, and <a class="el" href="Table_8cc-source.html#l00052">~Table()</a>.</p>

</div>
</div><p>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="Table_8h-source.html">Table.h</a><li><a class="el" href="Table_8cc-source.html">Table.cc</a></ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 30 09:27:06 2009 for DTN Reference Implementation by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
</body>
</html>