<!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 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 List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class 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 <<a class="el" href="Repository_8h-source.html">Repository.h</a>></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'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'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 </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 </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"> </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"> </td><td class="mdescRight">Constructor. <a href="#856860fe7b2079d5d5a57b810c66fe58"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Repository.html#0712f5569a82c80e81a5eabb8f1849a5">~Repository</a> ()</td></tr> <tr><td class="mdescLeft"> </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> </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"> </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 </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"> </td><td class="mdescRight">Remove arbitrary <a class="el" href="classprophet_1_1Bundle.html" title="Facade interface between Prophet router and host implmentation'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 </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"> </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> * </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"> </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 </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"> </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's abstract interface into DTN host'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 </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"> </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> & </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"> </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> </td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Repository.html#c1554cd2ad11330f6fe1635971244497">empty</a> () const </td></tr> <tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Repository.html#36f17a28a30034539c725e545bcbbae1">size</a> () const </td></tr> <tr><td class="mdescLeft"> </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 </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"> </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 </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"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Repository.html#7369ce2c18b82ea116377d4edb838509">evict</a> ()</td></tr> <tr><td class="mdescLeft"> </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'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> </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> &i)</td></tr> <tr><td class="mdescLeft"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Repository.html#40ace45bc3475f088b007a693fbe346e">core_</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">facade interface into <a class="el" href="classprophet_1_1Bundle.html" title="Facade interface between Prophet router and host implmentation'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> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Repository.html#cb20665e4d1142b8238574e870459080">comp_</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">queue policy <a class="el" href="classprophet_1_1Bundle.html" title="Facade interface between Prophet router and host implmentation'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> </td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Repository.html#30b8149dab50ab002643ce0a4ea8e0f7">list_</a></td></tr> <tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Repository.html#e39fe77b424c3bf6e2c9a12aec55dc7d">current_</a></td></tr> <tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="classprophet_1_1Repository_1_1BundleCoreRep.html">BundleCoreRep</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Reduced interface into <a class="el" href="classprophet_1_1BundleCore.html" title="Prophet facade's abstract interface into DTN host'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 & 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> * </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> * </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> * </td> <td class="paramname"> <em>list</em> = <code>NULL</code></td><td> </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> </td><td>facade interface into <a class="el" href="classprophet_1_1Bundle.html" title="Facade interface between Prophet router and host implmentation's Bundle representation...">Bundle</a> host </td></tr> <tr><td valign="top"></td><td valign="top"><em>qc</em> </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'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> </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> ) </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> * </td> <td class="paramname"> <em>bundle</em> </td> <td> ) </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> </td><td>pointer to <a class="el" href="classprophet_1_1Bundle.html" title="Facade interface between Prophet router and host implmentation'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> * </td> <td class="paramname"> <em>bundle</em> </td> <td> ) </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'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'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> </td><td>pointer to <a class="el" href="classprophet_1_1Bundle.html" title="Facade interface between Prophet router and host implmentation'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> * </td> <td class="paramname"> <em>qc</em> </td> <td> ) </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> </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> ) </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> ) </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's abstract interface into DTN host'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> * </td> <td class="paramname"> <em>b</em> </td> <td> ) </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>& prophet::Repository::get_bundles </td> <td>(</td> <td class="paramname"> </td> <td> ) </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> ) </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> ) </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> ) </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> ) </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> ) </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'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 </td> <td class="paramname"> <em>first</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>last</em></td><td> </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 </td> <td class="paramname"> <em>first</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>hole</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </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> * </td> <td class="paramname"> <em>b</em></td><td> </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 </td> <td class="paramname"> <em>first</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>last</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </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> * </td> <td class="paramname"> <em>b</em></td><td> </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 </td> <td class="paramname"> <em>first</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>hole</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </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> * </td> <td class="paramname"> <em>b</em></td><td> </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 </td> <td class="paramname"> <em>hole</em> </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#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 &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> * </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> & </td> <td class="paramname"> <em>i</em></td><td> </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'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'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 <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>