Sophie

Sophie

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

libdtn-devel-2.6.0-2mdv2009.1.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>DTN Reference Implementation: RouteEntry.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.8 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
    </ul>
  </div>
<h1>RouteEntry.h</h1><a href="RouteEntry_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> *    Copyright 2006 Intel Corporation</span>
<a name="l00003"></a>00003 <span class="comment"> * </span>
<a name="l00004"></a>00004 <span class="comment"> *    Licensed under the Apache License, Version 2.0 (the "License");</span>
<a name="l00005"></a>00005 <span class="comment"> *    you may not use this file except in compliance with the License.</span>
<a name="l00006"></a>00006 <span class="comment"> *    You may obtain a copy of the License at</span>
<a name="l00007"></a>00007 <span class="comment"> * </span>
<a name="l00008"></a>00008 <span class="comment"> *        http://www.apache.org/licenses/LICENSE-2.0</span>
<a name="l00009"></a>00009 <span class="comment"> * </span>
<a name="l00010"></a>00010 <span class="comment"> *    Unless required by applicable law or agreed to in writing, software</span>
<a name="l00011"></a>00011 <span class="comment"> *    distributed under the License is distributed on an "AS IS" BASIS,</span>
<a name="l00012"></a>00012 <span class="comment"> *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
<a name="l00013"></a>00013 <span class="comment"> *    See the License for the specific language governing permissions and</span>
<a name="l00014"></a>00014 <span class="comment"> *    limitations under the License.</span>
<a name="l00015"></a>00015 <span class="comment"> */</span>
<a name="l00016"></a>00016 
<a name="l00017"></a>00017 <span class="preprocessor">#ifndef _BUNDLE_ROUTEENTRY_H_</span>
<a name="l00018"></a>00018 <span class="preprocessor"></span><span class="preprocessor">#define _BUNDLE_ROUTEENTRY_H_</span>
<a name="l00019"></a>00019 <span class="preprocessor"></span>
<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;oasys/debug/Formatter.h&gt;</span>
<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;oasys/serialize/Serialize.h&gt;</span>
<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;oasys/util/StringUtils.h&gt;</span>
<a name="l00023"></a>00023 
<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="CustodyTimer_8h.html">bundling/CustodyTimer.h</a>"</span>
<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="ForwardingInfo_8h.html">bundling/ForwardingInfo.h</a>"</span>
<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="EndpointID_8h.html">naming/EndpointID.h</a>"</span>
<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="contacts_2Link_8h.html">contacts/Link.h</a>"</span>
<a name="l00028"></a>00028 
<a name="l00029"></a>00029 <span class="keyword">namespace </span>dtn {
<a name="l00030"></a>00030 
<a name="l00031"></a>00031 <span class="keyword">class </span>RouteEntryInfo;
<a name="l00032"></a>00032 
<a name="l00054"></a><a class="code" href="classdtn_1_1RouteEntry.html">00054</a> <span class="keyword">class </span><a class="code" href="classdtn_1_1RouteEntry.html" title="Class to represent route table entry.">RouteEntry</a> : <span class="keyword">public</span> oasys::<a class="code" href="classoasys_1_1Formatter.html">Formatter</a>,
<a name="l00055"></a>00055                    <span class="keyword">public</span> oasys::SerializableObject {
<a name="l00056"></a>00056 <span class="keyword">public</span>:
<a name="l00058"></a><a class="code" href="classdtn_1_1RouteEntry.html#b23318bb7a6803a9dfffd5cfa80d1da6">00058</a>     <span class="keyword">typedef</span> <a class="code" href="classdtn_1_1ForwardingInfo.html#18ec95dc1b1b8a7e9df9873a0d9b5947" title="The forwarding action type codes.">ForwardingInfo::action_t</a> <a class="code" href="classdtn_1_1ForwardingInfo.html#18ec95dc1b1b8a7e9df9873a0d9b5947" title="The forwarding action type codes.">action_t</a>;
<a name="l00059"></a>00059 
<a name="l00061"></a>00061     <span class="keyword">class </span><a class="code" href="classdtn_1_1RouteEntry_1_1DestMatches.html" title="Predicate to match the destination pattern for a route.">DestMatches</a>;
<a name="l00062"></a>00062     <span class="keyword">class </span><a class="code" href="classdtn_1_1RouteEntry_1_1NextHopMatches.html" title="Predicate to match the destination pattern for a route.">NextHopMatches</a>;
<a name="l00063"></a>00063 
<a name="l00067"></a>00067     <a class="code" href="classdtn_1_1RouteEntry.html#d8728109a6a145f40faa939f551860d1" title="First constructor requires a destination pattern and a next hop link.">RouteEntry</a>(<span class="keyword">const</span> <a class="code" href="classdtn_1_1EndpointIDPattern.html" title="A Distinct class for endpoint patterns (i.e.">EndpointIDPattern</a>&amp; <a class="code" href="classdtn_1_1RouteEntry.html#70826ec32537a2f6b08c8359d59a105d" title="Accessors.">dest_pattern</a>, <span class="keyword">const</span> <a class="code" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e" title="Typedef for a reference on a link.">LinkRef</a>&amp; <a class="code" href="classdtn_1_1RouteEntry.html#98215fe609f488da2d13fc7c1a0c4059" title="Accessors.">link</a>);
<a name="l00068"></a>00068 
<a name="l00073"></a>00073     <a class="code" href="classdtn_1_1RouteEntry.html#d8728109a6a145f40faa939f551860d1" title="First constructor requires a destination pattern and a next hop link.">RouteEntry</a>(<span class="keyword">const</span> <a class="code" href="classdtn_1_1EndpointIDPattern.html" title="A Distinct class for endpoint patterns (i.e.">EndpointIDPattern</a>&amp; <a class="code" href="classdtn_1_1RouteEntry.html#70826ec32537a2f6b08c8359d59a105d" title="Accessors.">dest_pattern</a>,
<a name="l00074"></a>00074                <span class="keyword">const</span> <a class="code" href="classdtn_1_1EndpointIDPattern.html" title="A Distinct class for endpoint patterns (i.e.">EndpointIDPattern</a>&amp; <a class="code" href="classdtn_1_1RouteEntry.html#6e2d89fe5a95f154380908c5b50c8ecb" title="Accessors.">route_to</a>);
<a name="l00075"></a>00075 
<a name="l00079"></a>00079     <a class="code" href="classdtn_1_1RouteEntry.html#ad64e0b789ad44c9780a4e1d0eb18f7b" title="Destructor.">~RouteEntry</a>();
<a name="l00080"></a>00080 
<a name="l00084"></a>00084     <span class="keywordtype">int</span> <a class="code" href="classdtn_1_1RouteEntry.html#b337f3c19e9fab98b57bbcd286477483" title="Hook to parse route configuration options.">parse_options</a>(<span class="keywordtype">int</span> argc, <span class="keyword">const</span> <span class="keywordtype">char</span>** argv,
<a name="l00085"></a>00085                       <span class="keyword">const</span> <span class="keywordtype">char</span>** invalidp = NULL);
<a name="l00086"></a>00086 
<a name="l00090"></a>00090     <span class="keywordtype">int</span> <a class="code" href="classdtn_1_1RouteEntry.html#d22539a3948433218b8cf9695c512ce7" title="Virtual from formatter.">format</a>(<span class="keywordtype">char</span>* <a class="code" href="num2sdnv_8c.html#a81cdcc7ff6987bc85c073253e32715f">buf</a>, <span class="keywordtype">size_t</span> sz) <span class="keyword">const</span>;
<a name="l00091"></a>00091      
<a name="l00095"></a>00095     <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1RouteEntry.html#7e8875141f778f47b65f6e79c456ffa6" title="Dump a header string in preparation for subsequent calls to dump();.">dump_header</a>(oasys::StringBuffer* <a class="code" href="num2sdnv_8c.html#a81cdcc7ff6987bc85c073253e32715f">buf</a>,
<a name="l00096"></a>00096                             <span class="keywordtype">int</span> dest_eid_width,
<a name="l00097"></a>00097                             <span class="keywordtype">int</span> source_eid_width,
<a name="l00098"></a>00098                             <span class="keywordtype">int</span> next_hop_width);
<a name="l00099"></a>00099     
<a name="l00105"></a>00105     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1RouteEntry.html#83527de99091b10b59d0ec3742194514" title="Dump a string representation of the route entry.">dump</a>(oasys::StringBuffer* <a class="code" href="num2sdnv_8c.html#a81cdcc7ff6987bc85c073253e32715f">buf</a>,
<a name="l00106"></a>00106               oasys::StringVector* long_strings,
<a name="l00107"></a>00107               <span class="keywordtype">int</span> dest_eid_width,
<a name="l00108"></a>00108               <span class="keywordtype">int</span> source_eid_width,
<a name="l00109"></a>00109               <span class="keywordtype">int</span> next_hop_width) <span class="keyword">const</span>;
<a name="l00110"></a>00110 
<a name="l00114"></a>00114     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1RouteEntry.html#f634f73246c9500322ce03b129762ca6" title="Virtual from SerializableObject.">serialize</a>( oasys::SerializeAction *a );
<a name="l00115"></a>00115 
<a name="l00117"></a><a class="code" href="classdtn_1_1RouteEntry.html#70826ec32537a2f6b08c8359d59a105d">00117</a>     <span class="keyword">const</span> <a class="code" href="classdtn_1_1EndpointIDPattern.html" title="A Distinct class for endpoint patterns (i.e.">EndpointIDPattern</a>&amp; <a class="code" href="classdtn_1_1RouteEntry.html#70826ec32537a2f6b08c8359d59a105d" title="Accessors.">dest_pattern</a>()<span class="keyword">   const </span>{ <span class="keywordflow">return</span> <a class="code" href="classdtn_1_1RouteEntry.html#8958daa0e1afa57c10eb86ac84cbff7f" title="The pattern that matches bundles&amp;#39; destination eid.">dest_pattern_</a>; }
<a name="l00118"></a><a class="code" href="classdtn_1_1RouteEntry.html#ed80ef80b6cfb5c19f128fe346090707">00118</a>     <span class="keyword">const</span> <a class="code" href="classdtn_1_1EndpointIDPattern.html" title="A Distinct class for endpoint patterns (i.e.">EndpointIDPattern</a>&amp; <a class="code" href="classdtn_1_1RouteEntry.html#ed80ef80b6cfb5c19f128fe346090707" title="Accessors.">source_pattern</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classdtn_1_1RouteEntry.html#a108b70c5f570cc67b7063f8221d47e4" title="The pattern that matches bundles&amp;#39; source eid.">source_pattern_</a>; }
<a name="l00119"></a><a class="code" href="classdtn_1_1RouteEntry.html#98215fe609f488da2d13fc7c1a0c4059">00119</a>     <span class="keyword">const</span> <a class="code" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e" title="Typedef for a reference on a link.">LinkRef</a>&amp;           <a class="code" href="classdtn_1_1RouteEntry.html#98215fe609f488da2d13fc7c1a0c4059" title="Accessors.">link</a>()<span class="keyword">           const </span>{ <span class="keywordflow">return</span> <a class="code" href="classdtn_1_1RouteEntry.html#176d090ea00dc64ede6503dff98b955f" title="Next hop link if known.">link_</a>; }
<a name="l00120"></a><a class="code" href="classdtn_1_1RouteEntry.html#6e2d89fe5a95f154380908c5b50c8ecb">00120</a>     <span class="keyword">const</span> <a class="code" href="classdtn_1_1EndpointIDPattern.html" title="A Distinct class for endpoint patterns (i.e.">EndpointIDPattern</a>&amp; <a class="code" href="classdtn_1_1RouteEntry.html#6e2d89fe5a95f154380908c5b50c8ecb" title="Accessors.">route_to</a>()<span class="keyword">       const </span>{ <span class="keywordflow">return</span> <a class="code" href="classdtn_1_1RouteEntry.html#50b5f49c41d0385b5fc31b98ce0efe69" title="Route destination for recursive lookups.">route_to_</a>; }
<a name="l00121"></a><a class="code" href="classdtn_1_1RouteEntry.html#3d1340ea310acb204795bd634893c8f0">00121</a>     u_int                    <a class="code" href="classdtn_1_1RouteEntry.html#3d1340ea310acb204795bd634893c8f0" title="Accessors.">priority</a>()<span class="keyword">       const </span>{ <span class="keywordflow">return</span> <a class="code" href="classdtn_1_1RouteEntry.html#acdebef93f58893dc9e951248180e0ef" title="Route priority.">priority_</a>; }
<a name="l00122"></a><a class="code" href="classdtn_1_1RouteEntry.html#9052c114bd00cc367914c754526ba561">00122</a>     <a class="code" href="classdtn_1_1RouteEntryInfo.html" title="Interface for any per-entry routing algorithm state.">RouteEntryInfo</a>*          <a class="code" href="classdtn_1_1RouteEntry.html#9052c114bd00cc367914c754526ba561" title="Accessors.">info</a>()<span class="keyword">           const </span>{ <span class="keywordflow">return</span> <a class="code" href="classdtn_1_1RouteEntry.html#5f04afd6e9a916896cbc470eff50277b" title="Abstract pointer to any algorithm-specific state that needs to be stored in the route...">info_</a>; }
<a name="l00123"></a><a class="code" href="classdtn_1_1RouteEntry.html#846eaa2c3a7324662a346c6bc0e5a69b">00123</a>     <span class="keyword">const</span> <a class="code" href="classdtn_1_1CustodyTimerSpec.html" title="Utility class to abstract out various parameters that can be used to calculate custody...">CustodyTimerSpec</a>&amp;  <a class="code" href="classdtn_1_1RouteEntry.html#846eaa2c3a7324662a346c6bc0e5a69b" title="Accessors.">custody_spec</a>()<span class="keyword">   const </span>{ <span class="keywordflow">return</span> <a class="code" href="classdtn_1_1RouteEntry.html#45ff6870afdd5b071f427b2800365348" title="Custody timer specification.">custody_spec_</a>; }
<a name="l00124"></a>00124 
<a name="l00125"></a><a class="code" href="classdtn_1_1RouteEntry.html#0fe979e29165c5bdad1a126f1a0fb04f">00125</a>     <a class="code" href="classdtn_1_1ForwardingInfo.html#18ec95dc1b1b8a7e9df9873a0d9b5947" title="The forwarding action type codes.">action_t</a> <a class="code" href="classdtn_1_1RouteEntry.html#0fe979e29165c5bdad1a126f1a0fb04f" title="Accessors.">action</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classdtn_1_1ForwardingInfo.html#18ec95dc1b1b8a7e9df9873a0d9b5947" title="The forwarding action type codes.">action_t</a><span class="keyword">&gt;</span>(<a class="code" href="classdtn_1_1RouteEntry.html#abaeac9b828ebf22e8dc8ccfc2564d01" title="Forwarding action code.">action_</a>); }
<a name="l00126"></a>00126 
<a name="l00127"></a><a class="code" href="classdtn_1_1RouteEntry.html#41c79b5f1b69681a2ae73dfdf064138f">00127</a>     <span class="keyword">const</span> std::string&amp; <a class="code" href="classdtn_1_1RouteEntry.html#41c79b5f1b69681a2ae73dfdf064138f" title="Accessors.">next_hop_str</a>()<span class="keyword"> const </span>{
<a name="l00128"></a>00128         <span class="keywordflow">return</span> (<a class="code" href="classdtn_1_1RouteEntry.html#98215fe609f488da2d13fc7c1a0c4059" title="Accessors.">link</a>() != NULL) ? <a class="code" href="classdtn_1_1RouteEntry.html#98215fe609f488da2d13fc7c1a0c4059" title="Accessors.">link</a>()-&gt;name_str() : <a class="code" href="classdtn_1_1RouteEntry.html#6e2d89fe5a95f154380908c5b50c8ecb" title="Accessors.">route_to</a>().<a class="code" href="classdtn_1_1EndpointID.html#e214dda88bf43a3576cfcdf76c77c5a9">str</a>();
<a name="l00129"></a>00129     }
<a name="l00131"></a>00131 
<a name="l00133"></a><a class="code" href="classdtn_1_1RouteEntry.html#a9dce0a2ce16974778c61c7d559056bc">00133</a>     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1RouteEntry.html#a9dce0a2ce16974778c61c7d559056bc" title="Setters.">set_action</a>(<a class="code" href="classdtn_1_1ForwardingInfo.html#18ec95dc1b1b8a7e9df9873a0d9b5947" title="The forwarding action type codes.">action_t</a> <a class="code" href="classdtn_1_1RouteEntry.html#0fe979e29165c5bdad1a126f1a0fb04f" title="Accessors.">action</a>)    { <a class="code" href="classdtn_1_1RouteEntry.html#abaeac9b828ebf22e8dc8ccfc2564d01" title="Forwarding action code.">action_</a> = action; }
<a name="l00134"></a><a class="code" href="classdtn_1_1RouteEntry.html#0a94c7e7c7a401211312a473b211f891">00134</a>     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1RouteEntry.html#0a94c7e7c7a401211312a473b211f891" title="Setters.">set_info</a>(<a class="code" href="classdtn_1_1RouteEntryInfo.html" title="Interface for any per-entry routing algorithm state.">RouteEntryInfo</a>* <a class="code" href="classdtn_1_1RouteEntry.html#9052c114bd00cc367914c754526ba561" title="Accessors.">info</a>) { <a class="code" href="classdtn_1_1RouteEntry.html#5f04afd6e9a916896cbc470eff50277b" title="Abstract pointer to any algorithm-specific state that needs to be stored in the route...">info_</a>   = info; }
<a name="l00136"></a>00136     
<a name="l00137"></a>00137 <span class="keyword">private</span>:
<a name="l00139"></a>00139     <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1RouteEntry.html#e6b63fd89814524f9eb1efbaf09657e9" title="Helper for dump().">append_long_string</a>(oasys::StringBuffer* <a class="code" href="num2sdnv_8c.html#a81cdcc7ff6987bc85c073253e32715f">buf</a>,
<a name="l00140"></a>00140                                    oasys::StringVector* long_strings,
<a name="l00141"></a>00141                                    <span class="keywordtype">int</span> width, <span class="keyword">const</span> std::string&amp; str);
<a name="l00142"></a>00142 
<a name="l00143"></a>00143     
<a name="l00145"></a><a class="code" href="classdtn_1_1RouteEntry.html#8958daa0e1afa57c10eb86ac84cbff7f">00145</a>     <a class="code" href="classdtn_1_1EndpointIDPattern.html" title="A Distinct class for endpoint patterns (i.e.">EndpointIDPattern</a> <a class="code" href="classdtn_1_1RouteEntry.html#8958daa0e1afa57c10eb86ac84cbff7f" title="The pattern that matches bundles&amp;#39; destination eid.">dest_pattern_</a>;
<a name="l00146"></a>00146 
<a name="l00148"></a><a class="code" href="classdtn_1_1RouteEntry.html#a108b70c5f570cc67b7063f8221d47e4">00148</a>     <a class="code" href="classdtn_1_1EndpointIDPattern.html" title="A Distinct class for endpoint patterns (i.e.">EndpointIDPattern</a> <a class="code" href="classdtn_1_1RouteEntry.html#a108b70c5f570cc67b7063f8221d47e4" title="The pattern that matches bundles&amp;#39; source eid.">source_pattern_</a>;
<a name="l00149"></a>00149     
<a name="l00151"></a><a class="code" href="classdtn_1_1RouteEntry.html#8d62a270bf39c7951038dfd0b59a6f56">00151</a>     u_int <a class="code" href="classdtn_1_1RouteEntry.html#8d62a270bf39c7951038dfd0b59a6f56" title="Bit vector of the bundle priority classes that should match this route.">bundle_cos_</a>;
<a name="l00152"></a>00152     
<a name="l00154"></a><a class="code" href="classdtn_1_1RouteEntry.html#acdebef93f58893dc9e951248180e0ef">00154</a>     u_int <a class="code" href="classdtn_1_1RouteEntry.html#acdebef93f58893dc9e951248180e0ef" title="Route priority.">priority_</a>;
<a name="l00155"></a>00155 
<a name="l00157"></a><a class="code" href="classdtn_1_1RouteEntry.html#176d090ea00dc64ede6503dff98b955f">00157</a>     <a class="code" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e" title="Typedef for a reference on a link.">LinkRef</a> <a class="code" href="classdtn_1_1RouteEntry.html#176d090ea00dc64ede6503dff98b955f" title="Next hop link if known.">link_</a>;
<a name="l00158"></a>00158         
<a name="l00160"></a><a class="code" href="classdtn_1_1RouteEntry.html#50b5f49c41d0385b5fc31b98ce0efe69">00160</a>     <a class="code" href="classdtn_1_1EndpointIDPattern.html" title="A Distinct class for endpoint patterns (i.e.">EndpointIDPattern</a> <a class="code" href="classdtn_1_1RouteEntry.html#50b5f49c41d0385b5fc31b98ce0efe69" title="Route destination for recursive lookups.">route_to_</a>;
<a name="l00161"></a>00161         
<a name="l00163"></a><a class="code" href="classdtn_1_1RouteEntry.html#abaeac9b828ebf22e8dc8ccfc2564d01">00163</a>     u_int32_t <a class="code" href="classdtn_1_1RouteEntry.html#abaeac9b828ebf22e8dc8ccfc2564d01" title="Forwarding action code.">action_</a>;
<a name="l00164"></a>00164 
<a name="l00166"></a><a class="code" href="classdtn_1_1RouteEntry.html#45ff6870afdd5b071f427b2800365348">00166</a>     <a class="code" href="classdtn_1_1CustodyTimerSpec.html" title="Utility class to abstract out various parameters that can be used to calculate custody...">CustodyTimerSpec</a> <a class="code" href="classdtn_1_1RouteEntry.html#45ff6870afdd5b071f427b2800365348" title="Custody timer specification.">custody_spec_</a>;
<a name="l00167"></a>00167 
<a name="l00170"></a><a class="code" href="classdtn_1_1RouteEntry.html#5f04afd6e9a916896cbc470eff50277b">00170</a>     <a class="code" href="classdtn_1_1RouteEntryInfo.html" title="Interface for any per-entry routing algorithm state.">RouteEntryInfo</a>* <a class="code" href="classdtn_1_1RouteEntry.html#5f04afd6e9a916896cbc470eff50277b" title="Abstract pointer to any algorithm-specific state that needs to be stored in the route...">info_</a>;        
<a name="l00171"></a>00171     
<a name="l00172"></a>00172     <span class="comment">// XXX/demmer confidence? latency? capacity?</span>
<a name="l00173"></a>00173     <span class="comment">// XXX/demmer bit to distinguish</span>
<a name="l00174"></a>00174     <span class="comment">// XXX/demmer make this serializable?</span>
<a name="l00175"></a>00175 };
<a name="l00176"></a>00176 
<a name="l00180"></a><a class="code" href="classdtn_1_1RouteEntry_1_1DestMatches.html">00180</a> <span class="keyword">class </span><a class="code" href="classdtn_1_1RouteEntry_1_1DestMatches.html" title="Predicate to match the destination pattern for a route.">RouteEntry::DestMatches</a> {
<a name="l00181"></a>00181 <span class="keyword">public</span>:
<a name="l00182"></a><a class="code" href="classdtn_1_1RouteEntry_1_1DestMatches.html#1b404298f4159c5f5c633a9b86f68c64">00182</a>     <a class="code" href="classdtn_1_1RouteEntry_1_1DestMatches.html#1b404298f4159c5f5c633a9b86f68c64">DestMatches</a>(<span class="keyword">const</span> <a class="code" href="classdtn_1_1EndpointIDPattern.html" title="A Distinct class for endpoint patterns (i.e.">EndpointIDPattern</a>&amp; dest) : <a class="code" href="classdtn_1_1RouteEntry_1_1DestMatches.html#0d484c4dc804eccaa2275c4083c82969">dest_</a>(dest) {}
<a name="l00183"></a><a class="code" href="classdtn_1_1RouteEntry_1_1DestMatches.html#dc66d4987c97794120dee567549326c8">00183</a>     <span class="keywordtype">bool</span> <a class="code" href="classdtn_1_1RouteEntry_1_1DestMatches.html#dc66d4987c97794120dee567549326c8">operator()</a>(<a class="code" href="classdtn_1_1RouteEntry.html" title="Class to represent route table entry.">RouteEntry</a>* entry) {
<a name="l00184"></a>00184         <span class="keywordflow">return</span> <a class="code" href="classdtn_1_1RouteEntry_1_1DestMatches.html#0d484c4dc804eccaa2275c4083c82969">dest_</a>.<a class="code" href="classdtn_1_1EndpointID.html#80721c0832c08c5066e6d6276d62d70b" title="Simple equality test function.">equals</a>(entry-&gt;<a class="code" href="classdtn_1_1RouteEntry.html#70826ec32537a2f6b08c8359d59a105d" title="Accessors.">dest_pattern</a>());
<a name="l00185"></a>00185     }
<a name="l00186"></a><a class="code" href="classdtn_1_1RouteEntry_1_1DestMatches.html#0d484c4dc804eccaa2275c4083c82969">00186</a>     <a class="code" href="classdtn_1_1EndpointIDPattern.html" title="A Distinct class for endpoint patterns (i.e.">EndpointIDPattern</a> <a class="code" href="classdtn_1_1RouteEntry_1_1DestMatches.html#0d484c4dc804eccaa2275c4083c82969">dest_</a>;
<a name="l00187"></a>00187 };
<a name="l00188"></a>00188 
<a name="l00192"></a><a class="code" href="classdtn_1_1RouteEntry_1_1NextHopMatches.html">00192</a> <span class="keyword">class </span><a class="code" href="classdtn_1_1RouteEntry_1_1NextHopMatches.html" title="Predicate to match the destination pattern for a route.">RouteEntry::NextHopMatches</a> {
<a name="l00193"></a>00193 <span class="keyword">public</span>:
<a name="l00194"></a><a class="code" href="classdtn_1_1RouteEntry_1_1NextHopMatches.html#95d192a73964dc3e135d8094f5a3a941">00194</a>     <a class="code" href="classdtn_1_1RouteEntry_1_1NextHopMatches.html#95d192a73964dc3e135d8094f5a3a941">NextHopMatches</a>(<span class="keyword">const</span> <a class="code" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e" title="Typedef for a reference on a link.">LinkRef</a>&amp; <a class="code" href="classdtn_1_1RouteEntry.html#98215fe609f488da2d13fc7c1a0c4059" title="Accessors.">link</a>) : <a class="code" href="classdtn_1_1RouteEntry_1_1NextHopMatches.html#dbfe0b6d2a3a48b521863fc684459da7">link_</a>(link) {}
<a name="l00195"></a><a class="code" href="classdtn_1_1RouteEntry_1_1NextHopMatches.html#bcf1b7c1038c4efa9c97c52df893d751">00195</a>     <span class="keywordtype">bool</span> <a class="code" href="classdtn_1_1RouteEntry_1_1NextHopMatches.html#bcf1b7c1038c4efa9c97c52df893d751">operator()</a>(<a class="code" href="classdtn_1_1RouteEntry.html" title="Class to represent route table entry.">RouteEntry</a>* entry) {
<a name="l00196"></a>00196         <span class="keywordflow">return</span> <a class="code" href="classdtn_1_1RouteEntry_1_1NextHopMatches.html#dbfe0b6d2a3a48b521863fc684459da7">link_</a> == entry-&gt;<a class="code" href="classdtn_1_1RouteEntry.html#98215fe609f488da2d13fc7c1a0c4059" title="Accessors.">link</a>();
<a name="l00197"></a>00197     }
<a name="l00198"></a><a class="code" href="classdtn_1_1RouteEntry_1_1NextHopMatches.html#dbfe0b6d2a3a48b521863fc684459da7">00198</a>     <a class="code" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e" title="Typedef for a reference on a link.">LinkRef</a> <a class="code" href="classdtn_1_1RouteEntry_1_1NextHopMatches.html#dbfe0b6d2a3a48b521863fc684459da7">link_</a>;
<a name="l00199"></a>00199 };
<a name="l00200"></a>00200 
<a name="l00204"></a><a class="code" href="classdtn_1_1RouteEntryInfo.html">00204</a> <span class="keyword">class </span><a class="code" href="classdtn_1_1RouteEntryInfo.html" title="Interface for any per-entry routing algorithm state.">RouteEntryInfo</a> {
<a name="l00205"></a>00205 <span class="keyword">public</span>:
<a name="l00206"></a><a class="code" href="classdtn_1_1RouteEntryInfo.html#f9729e66b5c383042119501f980801aa">00206</a>     <span class="keyword">virtual</span> <a class="code" href="classdtn_1_1RouteEntryInfo.html#f9729e66b5c383042119501f980801aa">~RouteEntryInfo</a>() {}
<a name="l00207"></a>00207 };
<a name="l00208"></a>00208 
<a name="l00213"></a><a class="code" href="classdtn_1_1RouteEntryVec.html">00213</a> <span class="keyword">class </span><a class="code" href="classdtn_1_1RouteEntryVec.html" title="Class for a vector of route entries.">RouteEntryVec</a> : <span class="keyword">public</span> std::<a class="code" href="classstd_1_1vector.html">vector</a>&lt;RouteEntry*&gt; {};
<a name="l00214"></a>00214 
<a name="l00219"></a><a class="code" href="structdtn_1_1RoutePrioritySort.html">00219</a> <span class="keyword">struct </span><a class="code" href="structdtn_1_1RoutePrioritySort.html" title="Functor class to sort a vector of routes based on forwarding priority, using the...">RoutePrioritySort</a> {
<a name="l00220"></a><a class="code" href="structdtn_1_1RoutePrioritySort.html#ef03c3c2a959f769ef7abb2ef7a2b9bc">00220</a>     <span class="keywordtype">bool</span> <a class="code" href="structdtn_1_1RoutePrioritySort.html#ef03c3c2a959f769ef7abb2ef7a2b9bc">operator() </a>(<a class="code" href="classdtn_1_1RouteEntry.html" title="Class to represent route table entry.">RouteEntry</a>* a, <a class="code" href="classdtn_1_1RouteEntry.html" title="Class to represent route table entry.">RouteEntry</a>* b) {
<a name="l00221"></a>00221         <span class="keywordflow">if</span> (a-&gt;<a class="code" href="classdtn_1_1RouteEntry.html#3d1340ea310acb204795bd634893c8f0" title="Accessors.">priority</a>() &lt; b-&gt;<a class="code" href="classdtn_1_1RouteEntry.html#3d1340ea310acb204795bd634893c8f0" title="Accessors.">priority</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00222"></a>00222         <span class="keywordflow">if</span> (a-&gt;<a class="code" href="classdtn_1_1RouteEntry.html#3d1340ea310acb204795bd634893c8f0" title="Accessors.">priority</a>() &gt; b-&gt;<a class="code" href="classdtn_1_1RouteEntry.html#3d1340ea310acb204795bd634893c8f0" title="Accessors.">priority</a>()) <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00223"></a>00223         <span class="keywordflow">return</span> (a-&gt;<a class="code" href="classdtn_1_1RouteEntry.html#98215fe609f488da2d13fc7c1a0c4059" title="Accessors.">link</a>()-&gt;bytes_queued() &lt;
<a name="l00224"></a>00224                 b-&gt;<a class="code" href="classdtn_1_1RouteEntry.html#98215fe609f488da2d13fc7c1a0c4059" title="Accessors.">link</a>()-&gt;bytes_queued());
<a name="l00225"></a>00225     }
<a name="l00226"></a>00226 };
<a name="l00227"></a>00227 
<a name="l00228"></a>00228 } <span class="comment">// namespace dtn</span>
<a name="l00229"></a>00229 
<a name="l00230"></a>00230 <span class="preprocessor">#endif </span><span class="comment">/* _BUNDLE_ROUTEENTRY_H_ */</span>
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 30 09:26:57 2009 for DTN Reference Implementation by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
</body>
</html>