Sophie

Sophie

distrib > Mandriva > 2009.0 > i586 > by-pkgid > d9faa203c2b0b6fbb179d93daaea81b7 > files > 1671

libdtn-devel-2.6.0-1mdv2009.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>DTN Reference Implementation: prophet::Repository Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<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_1Repository.html">Repository</a>
  </div>
</div>
<div class="contents">
<h1>prophet::Repository Class Reference</h1><!-- doxytag: class="prophet::Repository" --><code>#include &lt;<a class="el" href="Repository_8h-source.html">Repository.h</a>&gt;</code>
<p>

<p>
<a href="classprophet_1_1Repository-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
Implements a modified heap-based priority_queue with bounds enforcement. 
<p>
Any change to a Bundle's priority (such as the act of forwarding a <a class="el" href="classprophet_1_1Bundle.html" title="Facade interface between Prophet router and host implmentation&#39;s Bundle representation...">Bundle</a> over a link) requires a call-back to change_priority to preserve correct heap ordering. Any change to a Bundle's size will result in undefined behavior; at present, the best practice is to drop() the bundle before the size change then <a class="el" href="classprophet_1_1Repository.html#1cafd561e6fe753ab2c47e9ac0147610" title="Add bundle to Repository, incrementing current utilization by Bundle&#39;s storage...">add()</a> it again after the size is finalized. Any change in policy (ie, a new comparator) will cost n for the pass-thru of reheaping; any change in max will also be at most a linear cost. 
<p>Definition at line <a class="el" href="Repository_8h-source.html#l00043">43</a> of file <a class="el" href="Repository_8h-source.html">Repository.h</a>.</p>
<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 BundleList::iterator&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Repository.html#0194fa44c6eb1de11a06840a8909bc56">iterator</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef BundleList::const_iterator&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Repository.html#979d0a33179bc3894e60816e71591ef9">const_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_1Repository.html#856860fe7b2079d5d5a57b810c66fe58">Repository</a> (<a class="el" href="classprophet_1_1Repository_1_1BundleCoreRep.html">BundleCoreRep</a> *core, <a class="el" href="classprophet_1_1QueueComp.html">QueueComp</a> *qc=NULL, const <a class="el" href="classprophet_1_1BundleList.html">BundleList</a> *list=NULL)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor.  <a href="#856860fe7b2079d5d5a57b810c66fe58"></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_1Repository.html#0712f5569a82c80e81a5eabb8f1849a5">~Repository</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor.  <a href="#0712f5569a82c80e81a5eabb8f1849a5"></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_1Repository.html#1cafd561e6fe753ab2c47e9ac0147610">add</a> (const <a class="el" href="classprophet_1_1Bundle.html">Bundle</a> *bundle)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add bundle to <a class="el" href="classprophet_1_1Repository.html" title="Implements a modified heap-based priority_queue with bounds enforcement.">Repository</a>, incrementing current utilization by Bundle's storage size.  <a href="#1cafd561e6fe753ab2c47e9ac0147610"></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_1Repository.html#85630acc1cb2251b14f9e315545ce672">del</a> (const <a class="el" href="classprophet_1_1Bundle.html">Bundle</a> *bundle)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove arbitrary <a class="el" href="classprophet_1_1Bundle.html" title="Facade interface between Prophet router and host implmentation&#39;s Bundle representation...">Bundle</a> from <a class="el" href="classprophet_1_1Repository.html" title="Implements a modified heap-based priority_queue with bounds enforcement.">Repository</a>, and decrement current utilization accordingly.  <a href="#85630acc1cb2251b14f9e315545ce672"></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_1Repository.html#cc753727bc152f8e95a6871b93c6195b">set_comparator</a> (<a class="el" href="classprophet_1_1QueueComp.html">QueueComp</a> *qc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change policy of <a class="el" href="classprophet_1_1Repository.html" title="Implements a modified heap-based priority_queue with bounds enforcement.">Repository</a> by replacing comparator; post condition is that eviction order is resorted using the new comparator.  <a href="#cc753727bc152f8e95a6871b93c6195b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classprophet_1_1QueueComp.html">QueueComp</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Repository.html#e81e044d161c5c3fc6a3026b47b546fc">get_comparator</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Accessor to current comparator.  <a href="#e81e044d161c5c3fc6a3026b47b546fc"></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_1Repository.html#43a57af8101bc6ae87cd903a6a56d5f8">handle_change_max</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Callback to instruct <a class="el" href="classprophet_1_1Repository.html" title="Implements a modified heap-based priority_queue with bounds enforcement.">Repository</a> to query <a class="el" href="classprophet_1_1BundleCore.html" title="Prophet facade&#39;s abstract interface into DTN host&#39;s bundle core.">BundleCore</a> on new max.  <a href="#43a57af8101bc6ae87cd903a6a56d5f8"></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_1Repository.html#cd87c47df716511152d5c9da8c820de9">change_priority</a> (const <a class="el" href="classprophet_1_1Bundle.html">Bundle</a> *b)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Callback for external notice to recalculate eviction order for list, due to changed comparator state.  <a href="#cd87c47df716511152d5c9da8c820de9"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classprophet_1_1BundleList.html">BundleList</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Repository.html#2bc7391d0e5755776242f21f1069f962">get_bundles</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Fetch const reference to internal list of Bundles (there is no guarantee of meaningful order to returned list).  <a href="#2bc7391d0e5755776242f21f1069f962"></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_1Repository.html#c1554cd2ad11330f6fe1635971244497">empty</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return boolean indicating whether <a class="el" href="classprophet_1_1Repository.html" title="Implements a modified heap-based priority_queue with bounds enforcement.">Repository</a> has any bundles.  <a href="#c1554cd2ad11330f6fe1635971244497"></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_1Repository.html#36f17a28a30034539c725e545bcbbae1">size</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return number of Bundles in <a class="el" href="classprophet_1_1Repository.html" title="Implements a modified heap-based priority_queue with bounds enforcement.">Repository</a>.  <a href="#36f17a28a30034539c725e545bcbbae1"></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_1Repository.html#6f4bb95fb969edaf6eb1fcbdc8b36964">get_max</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the current upper limit imposed by <a class="el" href="classprophet_1_1Repository.html" title="Implements a modified heap-based priority_queue with bounds enforcement.">Repository</a>.  <a href="#6f4bb95fb969edaf6eb1fcbdc8b36964"></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_1Repository.html#d67a88c4f2acca62cc8907c61ea9116d">get_current</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return current storage consumed by Bundles in <a class="el" href="classprophet_1_1Repository.html" title="Implements a modified heap-based priority_queue with bounds enforcement.">Repository</a>.  <a href="#d67a88c4f2acca62cc8907c61ea9116d"></a><br></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_1Repository.html#7369ce2c18b82ea116377d4edb838509">evict</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Evict the next candidate <a class="el" href="classprophet_1_1Bundle.html" title="Facade interface between Prophet router and host implmentation&#39;s Bundle representation...">Bundle</a> according to policy order.  <a href="#7369ce2c18b82ea116377d4edb838509"></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_1Repository.html#fb61e882fbfc1d8aa83f65d6ba55ca0e">find</a> (const <a class="el" href="classprophet_1_1Bundle.html">Bundle</a> *b, <a class="el" href="classprophet_1_1Repository.html#0194fa44c6eb1de11a06840a8909bc56">iterator</a> &amp;i)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Utility function for find.  <a href="#fb61e882fbfc1d8aa83f65d6ba55ca0e"></a><br></td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></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_1Repository.html#a3ee3d3ac064fccb45e547c5c68cef67">make_heap</a> (size_t first, size_t last)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classprophet_1_1Heap.html">Heap</a> operations.  <a href="#a3ee3d3ac064fccb45e547c5c68cef67"></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_1Repository.html#05490d99aca837b83e8e951cf302e9b8">push_heap</a> (size_t first, size_t hole, size_t top, const <a class="el" href="classprophet_1_1Bundle.html">Bundle</a> *b)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classprophet_1_1Heap.html">Heap</a> operations.  <a href="#05490d99aca837b83e8e951cf302e9b8"></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_1Repository.html#3080a9f8198447ef342f7050f7222406">pop_heap</a> (size_t first, size_t last, size_t result, const <a class="el" href="classprophet_1_1Bundle.html">Bundle</a> *b)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classprophet_1_1Heap.html">Heap</a> operations.  <a href="#3080a9f8198447ef342f7050f7222406"></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_1Repository.html#9867f5529bdd391f9cf89df552912cde">adjust_heap</a> (size_t first, size_t hole, size_t len, const <a class="el" href="classprophet_1_1Bundle.html">Bundle</a> *b)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classprophet_1_1Heap.html">Heap</a> operations.  <a href="#9867f5529bdd391f9cf89df552912cde"></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_1Repository.html#d7ed7acb85267844994fb86365c1051e">remove_and_reheap</a> (size_t hole)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classprophet_1_1Heap.html">Heap</a> operations.  <a href="#d7ed7acb85267844994fb86365c1051e"></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_1Repository_1_1BundleCoreRep.html">BundleCoreRep</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Repository.html#40ace45bc3475f088b007a693fbe346e">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="#40ace45bc3475f088b007a693fbe346e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classprophet_1_1QueueComp.html">QueueComp</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Repository.html#cb20665e4d1142b8238574e870459080">comp_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">queue policy <a class="el" href="classprophet_1_1Bundle.html" title="Facade interface between Prophet router and host implmentation&#39;s Bundle representation...">Bundle</a> comparator  <a href="#cb20665e4d1142b8238574e870459080"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classprophet_1_1BundleList.html">BundleList</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Repository.html#30b8149dab50ab002643ce0a4ea8e0f7">list_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">array-based eviction-ordered heap of Bundles  <a href="#30b8149dab50ab002643ce0a4ea8e0f7"></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_1Repository.html#e39fe77b424c3bf6e2c9a12aec55dc7d">current_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">current utilization  <a href="#e39fe77b424c3bf6e2c9a12aec55dc7d"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Repository_1_1BundleCoreRep.html">BundleCoreRep</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reduced interface into <a class="el" href="classprophet_1_1BundleCore.html" title="Prophet facade&#39;s abstract interface into DTN host&#39;s bundle core.">BundleCore</a> to provide logging, drop_bundle signal, and answer the query for bundle storage quota.  <a href="classprophet_1_1Repository_1_1BundleCoreRep.html#_details">More...</a><br></td></tr>
</table>
<hr><h2>Member Typedef Documentation</h2>
<a class="anchor" name="0194fa44c6eb1de11a06840a8909bc56"></a><!-- doxytag: member="prophet::Repository::iterator" ref="0194fa44c6eb1de11a06840a8909bc56" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef BundleList::iterator <a class="el" href="classprophet_1_1Repository.html#0194fa44c6eb1de11a06840a8909bc56">prophet::Repository::iterator</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="Repository_8h-source.html#l00046">46</a> of file <a class="el" href="Repository_8h-source.html">Repository.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="979d0a33179bc3894e60816e71591ef9"></a><!-- doxytag: member="prophet::Repository::const_iterator" ref="979d0a33179bc3894e60816e71591ef9" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef BundleList::const_iterator <a class="el" href="classprophet_1_1Repository.html#979d0a33179bc3894e60816e71591ef9">prophet::Repository::const_iterator</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="Repository_8h-source.html#l00047">47</a> of file <a class="el" href="Repository_8h-source.html">Repository.h</a>.</p>

</div>
</div><p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="856860fe7b2079d5d5a57b810c66fe58"></a><!-- doxytag: member="prophet::Repository::Repository" ref="856860fe7b2079d5d5a57b810c66fe58" args="(BundleCoreRep *core, QueueComp *qc=NULL, const BundleList *list=NULL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">prophet::Repository::Repository           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classprophet_1_1Repository_1_1BundleCoreRep.html">BundleCoreRep</a> *&nbsp;</td>
          <td class="paramname"> <em>core</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classprophet_1_1QueueComp.html">QueueComp</a> *&nbsp;</td>
          <td class="paramname"> <em>qc</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classprophet_1_1BundleList.html">BundleList</a> *&nbsp;</td>
          <td class="paramname"> <em>list</em> = <code>NULL</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Constructor. 
<p>
<a class="el" href="classprophet_1_1Repository.html" title="Implements a modified heap-based priority_queue with bounds enforcement.">Repository</a> assumes ownership of memory pointed to by qc, but not for list (makes a copy). <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>core</em>&nbsp;</td><td>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 </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>qc</em>&nbsp;</td><td>Queue Policy comparator to sort by eviction order (such that the next <a class="el" href="classprophet_1_1Bundle.html" title="Facade interface between Prophet router and host implmentation&#39;s Bundle representation...">Bundle</a> to be evicted is evaluated less-than all other Bundles) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>initial list of Bundles to store </td></tr>
  </table>
</dl>

<p>Definition at line <a class="el" href="Repository_8cc-source.html#l00025">25</a> of file <a class="el" href="Repository_8cc-source.html">Repository.cc</a>.</p>

<p>References <a class="el" href="Repository_8h-source.html#l00166">comp_</a>, <a class="el" href="QueuePolicy_8h-source.html#l00040">prophet::QueuePolicy::FIFO</a>, and <a class="el" href="QueuePolicy_8h-source.html#l00351">prophet::QueuePolicy::policy()</a>.</p>

</div>
</div><p>
<a class="anchor" name="0712f5569a82c80e81a5eabb8f1849a5"></a><!-- doxytag: member="prophet::Repository::~Repository" ref="0712f5569a82c80e81a5eabb8f1849a5" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">prophet::Repository::~Repository           </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="Repository_8cc-source.html#l00045">45</a> of file <a class="el" href="Repository_8cc-source.html">Repository.cc</a>.</p>

<p>References <a class="el" href="Repository_8h-source.html#l00166">comp_</a>.</p>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="1cafd561e6fe753ab2c47e9ac0147610"></a><!-- doxytag: member="prophet::Repository::add" ref="1cafd561e6fe753ab2c47e9ac0147610" args="(const Bundle *bundle)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> prophet::Repository::add           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classprophet_1_1Bundle.html">Bundle</a> *&nbsp;</td>
          <td class="paramname"> <em>bundle</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add bundle to <a class="el" href="classprophet_1_1Repository.html" title="Implements a modified heap-based priority_queue with bounds enforcement.">Repository</a>, incrementing current utilization by Bundle's storage size. 
<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>bundle</em>&nbsp;</td><td>pointer to <a class="el" href="classprophet_1_1Bundle.html" title="Facade interface between Prophet router and host implmentation&#39;s Bundle representation...">Bundle</a> to be added </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>whether bundle was added </dd></dl>

<p>Definition at line <a class="el" href="Repository_8cc-source.html#l00079">79</a> of file <a class="el" href="Repository_8cc-source.html">Repository.cc</a>.</p>

<p>References <a class="el" href="Repository_8h-source.html#l00165">core_</a>, <a class="el" href="Repository_8h-source.html#l00168">current_</a>, <a class="el" href="Repository_8cc-source.html#l00157">evict()</a>, <a class="el" href="Repository_8cc-source.html#l00279">find()</a>, <a class="el" href="Repository_8h-source.html#l00167">list_</a>, <a class="el" href="BundleOffer_8cc-source.html#l00022">LOG</a>, <a class="el" href="classprophet_1_1Repository_1_1BundleCoreRep.html#bff8d97a63fbd0fc0941e7e39f8f2198">prophet::Repository::BundleCoreRep::max_bundle_quota()</a>, <a class="el" href="Repository_8cc-source.html#l00209">push_heap()</a>, and <a class="el" href="classprophet_1_1Bundle.html#8612e4ac7f86a42a8f6619b3702e91ff">prophet::Bundle::size()</a>.</p>

<p>Referenced by <a class="el" href="ProphetBundleList_8cc-source.html#l00037">dtn::ProphetBundleList::add()</a>.</p>

</div>
</div><p>
<a class="anchor" name="85630acc1cb2251b14f9e315545ce672"></a><!-- doxytag: member="prophet::Repository::del" ref="85630acc1cb2251b14f9e315545ce672" args="(const Bundle *bundle)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void prophet::Repository::del           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classprophet_1_1Bundle.html">Bundle</a> *&nbsp;</td>
          <td class="paramname"> <em>bundle</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Remove arbitrary <a class="el" href="classprophet_1_1Bundle.html" title="Facade interface between Prophet router and host implmentation&#39;s Bundle representation...">Bundle</a> from <a class="el" href="classprophet_1_1Repository.html" title="Implements a modified heap-based priority_queue with bounds enforcement.">Repository</a>, and decrement current utilization accordingly. 
<p>
Assumes <a class="el" href="classprophet_1_1Bundle.html" title="Facade interface between Prophet router and host implmentation&#39;s Bundle representation...">Bundle</a> priority has not been changed, and that underlying heap is in priority order. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>bundle</em>&nbsp;</td><td>pointer to <a class="el" href="classprophet_1_1Bundle.html" title="Facade interface between Prophet router and host implmentation&#39;s Bundle representation...">Bundle</a> to be removed </td></tr>
  </table>
</dl>

<p>Definition at line <a class="el" href="Repository_8cc-source.html#l00051">51</a> of file <a class="el" href="Repository_8cc-source.html">Repository.cc</a>.</p>

<p>References <a class="el" href="Repository_8h-source.html#l00168">current_</a>, <a class="el" href="Repository_8cc-source.html#l00279">find()</a>, <a class="el" href="Repository_8h-source.html#l00167">list_</a>, <a class="el" href="BundleOffer_8cc-source.html#l00022">LOG</a>, <a class="el" href="Repository_8cc-source.html#l00254">remove_and_reheap()</a>, <a class="el" href="classprophet_1_1Bundle.html#8f4fad2c83696237207ba7a19acb9ca4">prophet::Bundle::sequence_num()</a>, and <a class="el" href="classprophet_1_1Bundle.html#8612e4ac7f86a42a8f6619b3702e91ff">prophet::Bundle::size()</a>.</p>

<p>Referenced by <a class="el" href="ProphetBundleList_8cc-source.html#l00102">dtn::ProphetBundleList::clear()</a>, and <a class="el" href="ProphetBundleList_8cc-source.html#l00055">dtn::ProphetBundleList::del()</a>.</p>

</div>
</div><p>
<a class="anchor" name="cc753727bc152f8e95a6871b93c6195b"></a><!-- doxytag: member="prophet::Repository::set_comparator" ref="cc753727bc152f8e95a6871b93c6195b" args="(QueueComp *qc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void prophet::Repository::set_comparator           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classprophet_1_1QueueComp.html">QueueComp</a> *&nbsp;</td>
          <td class="paramname"> <em>qc</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Change policy of <a class="el" href="classprophet_1_1Repository.html" title="Implements a modified heap-based priority_queue with bounds enforcement.">Repository</a> by replacing comparator; post condition is that eviction order is resorted using the new comparator. 
<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>qc</em>&nbsp;</td><td>comparator used to sort Bundles in eviction order </td></tr>
  </table>
</dl>

<p>Definition at line <a class="el" href="Repository_8cc-source.html#l00108">108</a> of file <a class="el" href="Repository_8cc-source.html">Repository.cc</a>.</p>

<p>References <a class="el" href="Repository_8h-source.html#l00166">comp_</a>, <a class="el" href="Repository_8h-source.html#l00167">list_</a>, <a class="el" href="BundleOffer_8cc-source.html#l00022">LOG</a>, <a class="el" href="Repository_8cc-source.html#l00263">make_heap()</a>, <a class="el" href="QueuePolicy_8h-source.html#l00128">prophet::QueueComp::qp()</a>, and <a class="el" href="QueuePolicy_8h-source.html#l00052">prophet::QueuePolicy::qp_to_str()</a>.</p>

</div>
</div><p>
<a class="anchor" name="e81e044d161c5c3fc6a3026b47b546fc"></a><!-- doxytag: member="prophet::Repository::get_comparator" ref="e81e044d161c5c3fc6a3026b47b546fc" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classprophet_1_1QueueComp.html">QueueComp</a>* prophet::Repository::get_comparator           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Accessor to current comparator. 
<p>

<p>Definition at line <a class="el" href="Repository_8h-source.html#l00107">107</a> of file <a class="el" href="Repository_8h-source.html">Repository.h</a>.</p>

<p>References <a class="el" href="Repository_8h-source.html#l00166">comp_</a>.</p>

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

<p>
Callback to instruct <a class="el" href="classprophet_1_1Repository.html" title="Implements a modified heap-based priority_queue with bounds enforcement.">Repository</a> to query <a class="el" href="classprophet_1_1BundleCore.html" title="Prophet facade&#39;s abstract interface into DTN host&#39;s bundle core.">BundleCore</a> on new max. 
<p>

<p>Definition at line <a class="el" href="Repository_8cc-source.html#l00123">123</a> of file <a class="el" href="Repository_8cc-source.html">Repository.cc</a>.</p>

<p>References <a class="el" href="Repository_8h-source.html#l00165">core_</a>, <a class="el" href="Repository_8h-source.html#l00168">current_</a>, <a class="el" href="Repository_8cc-source.html#l00157">evict()</a>, and <a class="el" href="classprophet_1_1Repository_1_1BundleCoreRep.html#bff8d97a63fbd0fc0941e7e39f8f2198">prophet::Repository::BundleCoreRep::max_bundle_quota()</a>.</p>

</div>
</div><p>
<a class="anchor" name="cd87c47df716511152d5c9da8c820de9"></a><!-- doxytag: member="prophet::Repository::change_priority" ref="cd87c47df716511152d5c9da8c820de9" args="(const Bundle *b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void prophet::Repository::change_priority           </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></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Callback for external notice to recalculate eviction order for list, due to changed comparator state. 
<p>

<p>Definition at line <a class="el" href="Repository_8cc-source.html#l00132">132</a> of file <a class="el" href="Repository_8cc-source.html">Repository.cc</a>.</p>

<p>References <a class="el" href="Repository_8h-source.html#l00167">list_</a>, <a class="el" href="BundleOffer_8cc-source.html#l00022">LOG</a>, <a class="el" href="Repository_8cc-source.html#l00209">push_heap()</a>, <a class="el" href="Repository_8cc-source.html#l00254">remove_and_reheap()</a>, and <a class="el" href="classprophet_1_1Bundle.html#8f4fad2c83696237207ba7a19acb9ca4">prophet::Bundle::sequence_num()</a>.</p>

</div>
</div><p>
<a class="anchor" name="2bc7391d0e5755776242f21f1069f962"></a><!-- doxytag: member="prophet::Repository::get_bundles" ref="2bc7391d0e5755776242f21f1069f962" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classprophet_1_1BundleList.html">BundleList</a>&amp; prophet::Repository::get_bundles           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Fetch const reference to internal list of Bundles (there is no guarantee of meaningful order to returned list). 
<p>

<p>Definition at line <a class="el" href="Repository_8h-source.html#l00124">124</a> of file <a class="el" href="Repository_8h-source.html">Repository.h</a>.</p>

<p>References <a class="el" href="Repository_8h-source.html#l00167">list_</a>.</p>

<p>Referenced by <a class="el" href="ProphetBundleList_8cc-source.html#l00102">dtn::ProphetBundleList::clear()</a>, <a class="el" href="ProphetBundleList_8cc-source.html#l00115">dtn::ProphetBundleList::find()</a>, and <a class="el" href="ProphetBundleList_8h-source.html#l00079">dtn::ProphetBundleList::get_bundles()</a>.</p>

</div>
</div><p>
<a class="anchor" name="c1554cd2ad11330f6fe1635971244497"></a><!-- doxytag: member="prophet::Repository::empty" ref="c1554cd2ad11330f6fe1635971244497" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> prophet::Repository::empty           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Return boolean indicating whether <a class="el" href="classprophet_1_1Repository.html" title="Implements a modified heap-based priority_queue with bounds enforcement.">Repository</a> has any bundles. 
<p>

<p>Definition at line <a class="el" href="Repository_8h-source.html#l00129">129</a> of file <a class="el" href="Repository_8h-source.html">Repository.h</a>.</p>

<p>References <a class="el" href="Repository_8h-source.html#l00167">list_</a>.</p>

<p>Referenced by <a class="el" href="ProphetBundleList_8cc-source.html#l00102">dtn::ProphetBundleList::clear()</a>, and <a class="el" href="ProphetBundleList_8h-source.html#l00095">dtn::ProphetBundleList::empty()</a>.</p>

</div>
</div><p>
<a class="anchor" name="36f17a28a30034539c725e545bcbbae1"></a><!-- doxytag: member="prophet::Repository::size" ref="36f17a28a30034539c725e545bcbbae1" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t prophet::Repository::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>
Return number of Bundles in <a class="el" href="classprophet_1_1Repository.html" title="Implements a modified heap-based priority_queue with bounds enforcement.">Repository</a>. 
<p>

<p>Definition at line <a class="el" href="Repository_8h-source.html#l00134">134</a> of file <a class="el" href="Repository_8h-source.html">Repository.h</a>.</p>

<p>References <a class="el" href="Repository_8h-source.html#l00167">list_</a>.</p>

<p>Referenced by <a class="el" href="ProphetBundleList_8h-source.html#l00096">dtn::ProphetBundleList::size()</a>.</p>

</div>
</div><p>
<a class="anchor" name="6f4bb95fb969edaf6eb1fcbdc8b36964"></a><!-- doxytag: member="prophet::Repository::get_max" ref="6f4bb95fb969edaf6eb1fcbdc8b36964" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u_int prophet::Repository::get_max           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Return the current upper limit imposed by <a class="el" href="classprophet_1_1Repository.html" title="Implements a modified heap-based priority_queue with bounds enforcement.">Repository</a>. 
<p>

<p>Definition at line <a class="el" href="Repository_8h-source.html#l00139">139</a> of file <a class="el" href="Repository_8h-source.html">Repository.h</a>.</p>

<p>References <a class="el" href="Repository_8h-source.html#l00165">core_</a>, and <a class="el" href="classprophet_1_1Repository_1_1BundleCoreRep.html#bff8d97a63fbd0fc0941e7e39f8f2198">prophet::Repository::BundleCoreRep::max_bundle_quota()</a>.</p>

</div>
</div><p>
<a class="anchor" name="d67a88c4f2acca62cc8907c61ea9116d"></a><!-- doxytag: member="prophet::Repository::get_current" ref="d67a88c4f2acca62cc8907c61ea9116d" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u_int prophet::Repository::get_current           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Return current storage consumed by Bundles in <a class="el" href="classprophet_1_1Repository.html" title="Implements a modified heap-based priority_queue with bounds enforcement.">Repository</a>. 
<p>

<p>Definition at line <a class="el" href="Repository_8h-source.html#l00144">144</a> of file <a class="el" href="Repository_8h-source.html">Repository.h</a>.</p>

<p>References <a class="el" href="Repository_8h-source.html#l00168">current_</a>.</p>

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

<p>
Evict the next candidate <a class="el" href="classprophet_1_1Bundle.html" title="Facade interface between Prophet router and host implmentation&#39;s Bundle representation...">Bundle</a> according to policy order. 
<p>

<p>Definition at line <a class="el" href="Repository_8cc-source.html#l00157">157</a> of file <a class="el" href="Repository_8cc-source.html">Repository.cc</a>.</p>

<p>References <a class="el" href="Repository_8h-source.html#l00166">comp_</a>, <a class="el" href="Repository_8h-source.html#l00165">core_</a>, <a class="el" href="Repository_8h-source.html#l00168">current_</a>, <a class="el" href="classprophet_1_1Repository_1_1BundleCoreRep.html#29236b5324dc7597b6f8659d5678f88b">prophet::Repository::BundleCoreRep::drop_bundle()</a>, <a class="el" href="num2sdnv_8c-source.html#l00034">len</a>, <a class="el" href="QueuePolicy_8h-source.html#l00045">prophet::QueuePolicy::LEPR</a>, <a class="el" href="Repository_8h-source.html#l00167">list_</a>, <a class="el" href="QueuePolicy_8h-source.html#l00153">prophet::QueueComp::min_fwd_</a>, <a class="el" href="classprophet_1_1Bundle.html#3308fba98e051cf1addc960912d75cca">prophet::Bundle::num_forward()</a>, <a class="el" href="Repository_8cc-source.html#l00222">pop_heap()</a>, <a class="el" href="QueuePolicy_8h-source.html#l00128">prophet::QueueComp::qp()</a>, <a class="el" href="Repository_8cc-source.html#l00254">remove_and_reheap()</a>, and <a class="el" href="classprophet_1_1Bundle.html#8612e4ac7f86a42a8f6619b3702e91ff">prophet::Bundle::size()</a>.</p>

<p>Referenced by <a class="el" href="Repository_8cc-source.html#l00079">add()</a>, and <a class="el" href="Repository_8cc-source.html#l00123">handle_change_max()</a>.</p>

</div>
</div><p>
<a class="anchor" name="a3ee3d3ac064fccb45e547c5c68cef67"></a><!-- doxytag: member="prophet::Repository::make_heap" ref="a3ee3d3ac064fccb45e547c5c68cef67" args="(size_t first, size_t last)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void prophet::Repository::make_heap           </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>first</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>last</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>
<a class="el" href="classprophet_1_1Heap.html">Heap</a> operations. 
<p>

<p>Definition at line <a class="el" href="Repository_8cc-source.html#l00263">263</a> of file <a class="el" href="Repository_8cc-source.html">Repository.cc</a>.</p>

<p>References <a class="el" href="Repository_8cc-source.html#l00229">adjust_heap()</a>, <a class="el" href="num2sdnv_8c-source.html#l00034">len</a>, and <a class="el" href="Repository_8h-source.html#l00167">list_</a>.</p>

<p>Referenced by <a class="el" href="Repository_8cc-source.html#l00108">set_comparator()</a>.</p>

</div>
</div><p>
<a class="anchor" name="05490d99aca837b83e8e951cf302e9b8"></a><!-- doxytag: member="prophet::Repository::push_heap" ref="05490d99aca837b83e8e951cf302e9b8" args="(size_t first, size_t hole, size_t top, const Bundle *b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void prophet::Repository::push_heap           </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>first</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>hole</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>top</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></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;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classprophet_1_1Heap.html">Heap</a> operations. 
<p>

<p>Definition at line <a class="el" href="Repository_8cc-source.html#l00209">209</a> of file <a class="el" href="Repository_8cc-source.html">Repository.cc</a>.</p>

<p>References <a class="el" href="Repository_8h-source.html#l00166">comp_</a>, and <a class="el" href="Repository_8h-source.html#l00167">list_</a>.</p>

<p>Referenced by <a class="el" href="Repository_8cc-source.html#l00079">add()</a>, <a class="el" href="Repository_8cc-source.html#l00229">adjust_heap()</a>, and <a class="el" href="Repository_8cc-source.html#l00132">change_priority()</a>.</p>

</div>
</div><p>
<a class="anchor" name="3080a9f8198447ef342f7050f7222406"></a><!-- doxytag: member="prophet::Repository::pop_heap" ref="3080a9f8198447ef342f7050f7222406" args="(size_t first, size_t last, size_t result, const Bundle *b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void prophet::Repository::pop_heap           </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>first</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>last</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>result</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></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;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classprophet_1_1Heap.html">Heap</a> operations. 
<p>

<p>Definition at line <a class="el" href="Repository_8cc-source.html#l00222">222</a> of file <a class="el" href="Repository_8cc-source.html">Repository.cc</a>.</p>

<p>References <a class="el" href="Repository_8cc-source.html#l00229">adjust_heap()</a>, and <a class="el" href="Repository_8h-source.html#l00167">list_</a>.</p>

<p>Referenced by <a class="el" href="Repository_8cc-source.html#l00157">evict()</a>.</p>

</div>
</div><p>
<a class="anchor" name="9867f5529bdd391f9cf89df552912cde"></a><!-- doxytag: member="prophet::Repository::adjust_heap" ref="9867f5529bdd391f9cf89df552912cde" args="(size_t first, size_t hole, size_t len, const Bundle *b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void prophet::Repository::adjust_heap           </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>first</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>hole</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></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;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classprophet_1_1Heap.html">Heap</a> operations. 
<p>

<p>Definition at line <a class="el" href="Repository_8cc-source.html#l00229">229</a> of file <a class="el" href="Repository_8cc-source.html">Repository.cc</a>.</p>

<p>References <a class="el" href="Repository_8h-source.html#l00166">comp_</a>, <a class="el" href="Repository_8h-source.html#l00167">list_</a>, and <a class="el" href="Repository_8cc-source.html#l00209">push_heap()</a>.</p>

<p>Referenced by <a class="el" href="Repository_8cc-source.html#l00263">make_heap()</a>, <a class="el" href="Repository_8cc-source.html#l00222">pop_heap()</a>, and <a class="el" href="Repository_8cc-source.html#l00254">remove_and_reheap()</a>.</p>

</div>
</div><p>
<a class="anchor" name="d7ed7acb85267844994fb86365c1051e"></a><!-- doxytag: member="prophet::Repository::remove_and_reheap" ref="d7ed7acb85267844994fb86365c1051e" args="(size_t hole)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void prophet::Repository::remove_and_reheap           </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>hole</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classprophet_1_1Heap.html">Heap</a> operations. 
<p>

<p>Definition at line <a class="el" href="Repository_8cc-source.html#l00254">254</a> of file <a class="el" href="Repository_8cc-source.html">Repository.cc</a>.</p>

<p>References <a class="el" href="Repository_8cc-source.html#l00229">adjust_heap()</a>, and <a class="el" href="Repository_8h-source.html#l00167">list_</a>.</p>

<p>Referenced by <a class="el" href="Repository_8cc-source.html#l00132">change_priority()</a>, <a class="el" href="Repository_8cc-source.html#l00051">del()</a>, and <a class="el" href="Repository_8cc-source.html#l00157">evict()</a>.</p>

</div>
</div><p>
<a class="anchor" name="fb61e882fbfc1d8aa83f65d6ba55ca0e"></a><!-- doxytag: member="prophet::Repository::find" ref="fb61e882fbfc1d8aa83f65d6ba55ca0e" args="(const Bundle *b, iterator &amp;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::Repository::find           </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>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classprophet_1_1Repository.html#0194fa44c6eb1de11a06840a8909bc56">iterator</a> &amp;&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 find. 
<p>

<p>Definition at line <a class="el" href="Repository_8cc-source.html#l00279">279</a> of file <a class="el" href="Repository_8cc-source.html">Repository.cc</a>.</p>

<p>References <a class="el" href="Repository_8h-source.html#l00167">list_</a>.</p>

<p>Referenced by <a class="el" href="Repository_8cc-source.html#l00079">add()</a>, and <a class="el" href="Repository_8cc-source.html#l00051">del()</a>.</p>

</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="40ace45bc3475f088b007a693fbe346e"></a><!-- doxytag: member="prophet::Repository::core_" ref="40ace45bc3475f088b007a693fbe346e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classprophet_1_1Repository_1_1BundleCoreRep.html">BundleCoreRep</a>* <a class="el" href="classprophet_1_1Repository.html#40ace45bc3475f088b007a693fbe346e">prophet::Repository::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="Repository_8h-source.html#l00165">165</a> of file <a class="el" href="Repository_8h-source.html">Repository.h</a>.</p>

<p>Referenced by <a class="el" href="Repository_8cc-source.html#l00079">add()</a>, <a class="el" href="Repository_8cc-source.html#l00157">evict()</a>, <a class="el" href="Repository_8h-source.html#l00139">get_max()</a>, and <a class="el" href="Repository_8cc-source.html#l00123">handle_change_max()</a>.</p>

</div>
</div><p>
<a class="anchor" name="cb20665e4d1142b8238574e870459080"></a><!-- doxytag: member="prophet::Repository::comp_" ref="cb20665e4d1142b8238574e870459080" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classprophet_1_1QueueComp.html">QueueComp</a>* <a class="el" href="classprophet_1_1Repository.html#cb20665e4d1142b8238574e870459080">prophet::Repository::comp_</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

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

<p>Definition at line <a class="el" href="Repository_8h-source.html#l00166">166</a> of file <a class="el" href="Repository_8h-source.html">Repository.h</a>.</p>

<p>Referenced by <a class="el" href="Repository_8cc-source.html#l00229">adjust_heap()</a>, <a class="el" href="Repository_8cc-source.html#l00157">evict()</a>, <a class="el" href="Repository_8h-source.html#l00107">get_comparator()</a>, <a class="el" href="Repository_8cc-source.html#l00209">push_heap()</a>, <a class="el" href="Repository_8cc-source.html#l00025">Repository()</a>, <a class="el" href="Repository_8cc-source.html#l00108">set_comparator()</a>, and <a class="el" href="Repository_8cc-source.html#l00045">~Repository()</a>.</p>

</div>
</div><p>
<a class="anchor" name="30b8149dab50ab002643ce0a4ea8e0f7"></a><!-- doxytag: member="prophet::Repository::list_" ref="30b8149dab50ab002643ce0a4ea8e0f7" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classprophet_1_1BundleList.html">BundleList</a> <a class="el" href="classprophet_1_1Repository.html#30b8149dab50ab002643ce0a4ea8e0f7">prophet::Repository::list_</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
array-based eviction-ordered heap of Bundles 
<p>

<p>Definition at line <a class="el" href="Repository_8h-source.html#l00167">167</a> of file <a class="el" href="Repository_8h-source.html">Repository.h</a>.</p>

<p>Referenced by <a class="el" href="Repository_8cc-source.html#l00079">add()</a>, <a class="el" href="Repository_8cc-source.html#l00229">adjust_heap()</a>, <a class="el" href="Repository_8cc-source.html#l00132">change_priority()</a>, <a class="el" href="Repository_8cc-source.html#l00051">del()</a>, <a class="el" href="Repository_8h-source.html#l00129">empty()</a>, <a class="el" href="Repository_8cc-source.html#l00157">evict()</a>, <a class="el" href="Repository_8cc-source.html#l00279">find()</a>, <a class="el" href="Repository_8h-source.html#l00124">get_bundles()</a>, <a class="el" href="Repository_8cc-source.html#l00263">make_heap()</a>, <a class="el" href="Repository_8cc-source.html#l00222">pop_heap()</a>, <a class="el" href="Repository_8cc-source.html#l00209">push_heap()</a>, <a class="el" href="Repository_8cc-source.html#l00254">remove_and_reheap()</a>, <a class="el" href="Repository_8cc-source.html#l00108">set_comparator()</a>, and <a class="el" href="Repository_8h-source.html#l00134">size()</a>.</p>

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

<p>
current utilization 
<p>

<p>Definition at line <a class="el" href="Repository_8h-source.html#l00168">168</a> of file <a class="el" href="Repository_8h-source.html">Repository.h</a>.</p>

<p>Referenced by <a class="el" href="Repository_8cc-source.html#l00079">add()</a>, <a class="el" href="Repository_8cc-source.html#l00051">del()</a>, <a class="el" href="Repository_8cc-source.html#l00157">evict()</a>, <a class="el" href="Repository_8h-source.html#l00144">get_current()</a>, and <a class="el" href="Repository_8cc-source.html#l00123">handle_change_max()</a>.</p>

</div>
</div><p>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="Repository_8h-source.html">Repository.h</a><li><a class="el" href="Repository_8cc-source.html">Repository.cc</a></ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Mon Jul 21 14:09:56 2008 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.6 </small></address>
</body>
</html>