Sophie

Sophie

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

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: Encounter.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>Encounter.h</h1><a href="Encounter_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 2007 Baylor University</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 _PROPHET_ENCOUNTER_H_</span>
<a name="l00018"></a>00018 <span class="preprocessor"></span><span class="preprocessor">#define _PROPHET_ENCOUNTER_H_</span>
<a name="l00019"></a>00019 <span class="preprocessor"></span>
<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="prophet_2Link_8h.html">Link.h</a>"</span>
<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="BaseTLV_8h.html">BaseTLV.h</a>"</span>
<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="HelloTLV_8h.html">HelloTLV.h</a>"</span>
<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="ProphetTLV_8h.html">ProphetTLV.h</a>"</span>
<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="Oracle_8h.html">Oracle.h</a>"</span>
<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="Table_8h.html">Table.h</a>"</span>
<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="prophet_2Dictionary_8h.html">Dictionary.h</a>"</span>
<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="BundleTLVEntryList_8h.html">BundleTLVEntryList.h</a>"</span>
<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="Alarm_8h.html">Alarm.h</a>"</span>
<a name="l00029"></a>00029 
<a name="l00030"></a>00030 <span class="keyword">namespace </span>prophet
<a name="l00031"></a>00031 {
<a name="l00032"></a>00032 
<a name="l00050"></a><a class="code" href="classprophet_1_1Encounter.html">00050</a> <span class="keyword">class </span><a class="code" href="classprophet_1_1Encounter.html" title="Section 4.4.4, p.">Encounter</a> : <span class="keyword">public</span> <a class="code" href="classprophet_1_1ExpirationHandler.html" title="Alarm expiration handler.">ExpirationHandler</a>
<a name="l00051"></a>00051 {
<a name="l00052"></a>00052 <span class="keyword">public</span>:
<a name="l00053"></a><a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9">00053</a>     <span class="keyword">typedef</span> <span class="keyword">enum</span> {
<a name="l00054"></a><a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9027f48b296abf32403088453ada0bff1">00054</a>         <a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9027f48b296abf32403088453ada0bff1">UNDEFINED_STATE</a> = 0,
<a name="l00055"></a><a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb991e0b51df6976bcde8cf55212096505b">00055</a>         <a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb991e0b51df6976bcde8cf55212096505b" title="Waiting for Neighbor.">WAIT_NB</a>,    
<a name="l00056"></a><a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9625f05a320efb933374cad2390964bb0">00056</a>         <a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9625f05a320efb933374cad2390964bb0" title="Sent SYN, waiting for SYNACK.">SYNSENT</a>,    
<a name="l00057"></a><a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9ea2c59029f0c5239d6ccfa56fb6a36e5">00057</a>         <a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9ea2c59029f0c5239d6ccfa56fb6a36e5" title="Received SYN, sent SYNACK, waiting for ACK.">SYNRCVD</a>,    
<a name="l00058"></a><a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9fd28ce91e2148046e9a00d468b743abe">00058</a>         <a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9fd28ce91e2148046e9a00d468b743abe" title="Prophet link established with remote.">ESTAB</a>,      
<a name="l00059"></a><a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9e133553db2c9ad50813600fb7f9e93f9">00059</a>         <a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9e133553db2c9ad50813600fb7f9e93f9" title="Listener mode of bundle-passing phase.">WAIT_DICT</a>,  
<a name="l00060"></a><a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9bd895d33497b53078b48643d9369809a">00060</a>         <a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9bd895d33497b53078b48643d9369809a" title="Listener rcvd RIBD, waiting for RIB.">WAIT_RIB</a>,   
<a name="l00061"></a><a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9ce6a178fe0a05e694a9cd1a80e16c98f">00061</a>         <a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9ce6a178fe0a05e694a9cd1a80e16c98f" title="Listener sent Offer, waiting for Request.">OFFER</a>,      
<a name="l00062"></a><a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9e6e32a2f17f2f660643c676819bf3643">00062</a>         <a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9e6e32a2f17f2f660643c676819bf3643" title="Initiator creates and sends RIBD and RIB.">CREATE_DR</a>,  
<a name="l00063"></a><a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9f998c515d14b551a387bdd54d9c6cb77">00063</a>         <a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9f998c515d14b551a387bdd54d9c6cb77" title="Initiator sent RIBD and RIB, waiting for Offer.">SEND_DR</a>,    
<a name="l00064"></a><a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb91bd327c1e52e42eaef2de441bc5b473d">00064</a>         <a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb91bd327c1e52e42eaef2de441bc5b473d" title="Initiator sent Request, waiting for Bundles.">REQUEST</a>,    
<a name="l00065"></a><a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9e9b37829d98d7c80e51c873c5a314493">00065</a>         <a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9e9b37829d98d7c80e51c873c5a314493" title="All phases now complete, waiting for timer or ACK.">WAIT_INFO</a>   
<a name="l00066"></a>00066     } <a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9">state_t</a>;
<a name="l00067"></a>00067 
<a name="l00068"></a><a class="code" href="classprophet_1_1Encounter.html#b24589d67c7f680718ced5815f51f555">00068</a>     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classprophet_1_1Encounter.html#b24589d67c7f680718ced5815f51f555">state_to_str</a>(<a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9">state_t</a> st) {
<a name="l00069"></a>00069         <span class="keywordflow">switch</span>(st) {
<a name="l00070"></a>00070 <span class="preprocessor">#define CASE(_state) case _state: return # _state</span>
<a name="l00071"></a>00071 <span class="preprocessor"></span>        <a class="code" href="dtn__ipc_8c.html#6d24efd83036c2dde8d9100adb9abffd">CASE</a>(<a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb991e0b51df6976bcde8cf55212096505b" title="Waiting for Neighbor.">WAIT_NB</a>);
<a name="l00072"></a>00072         <a class="code" href="dtn__ipc_8c.html#6d24efd83036c2dde8d9100adb9abffd">CASE</a>(<a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9625f05a320efb933374cad2390964bb0" title="Sent SYN, waiting for SYNACK.">SYNSENT</a>);
<a name="l00073"></a>00073         <a class="code" href="dtn__ipc_8c.html#6d24efd83036c2dde8d9100adb9abffd">CASE</a>(<a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9ea2c59029f0c5239d6ccfa56fb6a36e5" title="Received SYN, sent SYNACK, waiting for ACK.">SYNRCVD</a>);
<a name="l00074"></a>00074         <a class="code" href="dtn__ipc_8c.html#6d24efd83036c2dde8d9100adb9abffd">CASE</a>(<a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9fd28ce91e2148046e9a00d468b743abe" title="Prophet link established with remote.">ESTAB</a>);
<a name="l00075"></a>00075         <a class="code" href="dtn__ipc_8c.html#6d24efd83036c2dde8d9100adb9abffd">CASE</a>(<a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9e133553db2c9ad50813600fb7f9e93f9" title="Listener mode of bundle-passing phase.">WAIT_DICT</a>);
<a name="l00076"></a>00076         <a class="code" href="dtn__ipc_8c.html#6d24efd83036c2dde8d9100adb9abffd">CASE</a>(<a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9bd895d33497b53078b48643d9369809a" title="Listener rcvd RIBD, waiting for RIB.">WAIT_RIB</a>);
<a name="l00077"></a>00077         <a class="code" href="dtn__ipc_8c.html#6d24efd83036c2dde8d9100adb9abffd">CASE</a>(<a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9ce6a178fe0a05e694a9cd1a80e16c98f" title="Listener sent Offer, waiting for Request.">OFFER</a>);
<a name="l00078"></a>00078         <a class="code" href="dtn__ipc_8c.html#6d24efd83036c2dde8d9100adb9abffd">CASE</a>(<a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9e6e32a2f17f2f660643c676819bf3643" title="Initiator creates and sends RIBD and RIB.">CREATE_DR</a>);
<a name="l00079"></a>00079         <a class="code" href="dtn__ipc_8c.html#6d24efd83036c2dde8d9100adb9abffd">CASE</a>(<a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9f998c515d14b551a387bdd54d9c6cb77" title="Initiator sent RIBD and RIB, waiting for Offer.">SEND_DR</a>);
<a name="l00080"></a>00080         <a class="code" href="dtn__ipc_8c.html#6d24efd83036c2dde8d9100adb9abffd">CASE</a>(<a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb91bd327c1e52e42eaef2de441bc5b473d" title="Initiator sent Request, waiting for Bundles.">REQUEST</a>);
<a name="l00081"></a>00081         <a class="code" href="dtn__ipc_8c.html#6d24efd83036c2dde8d9100adb9abffd">CASE</a>(<a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9e9b37829d98d7c80e51c873c5a314493" title="All phases now complete, waiting for timer or ACK.">WAIT_INFO</a>);
<a name="l00082"></a>00082 <span class="preprocessor">#undef CASE</span>
<a name="l00083"></a>00083 <span class="preprocessor"></span>        <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">"Unknown State"</span>;
<a name="l00084"></a>00084         }
<a name="l00085"></a>00085     }
<a name="l00089"></a>00089     <a class="code" href="classprophet_1_1Encounter.html#9afbbeba17132b7bc958afa01d8de7a9" title="Constructor.">Encounter</a>(<span class="keyword">const</span> <a class="code" href="classprophet_1_1Link.html">Link</a>* <a class="code" href="classprophet_1_1Encounter.html#3938ffb4381ec57f28af815d9fe0d2c2" title="Accessors.">nexthop</a>, Oracle* oracle, u_int16_t instance);
<a name="l00090"></a>00090 
<a name="l00094"></a>00094     <a class="code" href="classprophet_1_1Encounter.html#9afbbeba17132b7bc958afa01d8de7a9" title="Constructor.">Encounter</a>(<span class="keyword">const</span> <a class="code" href="classprophet_1_1Encounter.html" title="Section 4.4.4, p.">Encounter</a>&amp; e);
<a name="l00095"></a>00095 
<a name="l00099"></a>00099     <a class="code" href="classprophet_1_1Encounter.html#9ee891179863b49c761ac032d18d1ce0" title="Destructor.">~Encounter</a>();
<a name="l00100"></a>00100 
<a name="l00102"></a><a class="code" href="classprophet_1_1Encounter.html#23815b6de0c2fddf6050591865a8d28e">00102</a>     <span class="keywordtype">bool</span> <a class="code" href="classprophet_1_1Encounter.html#23815b6de0c2fddf6050591865a8d28e" title="Operators.">operator&lt; </a>(<span class="keyword">const</span> <a class="code" href="classprophet_1_1Encounter.html" title="Section 4.4.4, p.">Encounter</a>&amp; e)<span class="keyword"> const</span>
<a name="l00103"></a>00103 <span class="keyword">    </span>{
<a name="l00104"></a>00104         <span class="keywordflow">return</span> <a class="code" href="classprophet_1_1Encounter.html#30722ad51662188f150b8114943d00d3" title="remote&amp;#39;s instance for local">remote_instance_</a> &lt; e.<a class="code" href="classprophet_1_1Encounter.html#30722ad51662188f150b8114943d00d3" title="remote&amp;#39;s instance for local">remote_instance_</a>;
<a name="l00105"></a>00105     }
<a name="l00107"></a>00107 
<a name="l00109"></a><a class="code" href="classprophet_1_1Encounter.html#8b63d490e3cfe11c726e80aabdfdc358">00109</a>     u_int16_t   <a class="code" href="classprophet_1_1Encounter.html#8b63d490e3cfe11c726e80aabdfdc358" title="Accessors.">remote_instance</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classprophet_1_1Encounter.html#30722ad51662188f150b8114943d00d3" title="remote&amp;#39;s instance for local">remote_instance_</a>; }
<a name="l00110"></a><a class="code" href="classprophet_1_1Encounter.html#af1e90194d250d8d3d266b64ecb7120e">00110</a>     u_int16_t   <a class="code" href="classprophet_1_1Encounter.html#af1e90194d250d8d3d266b64ecb7120e" title="Accessors.">local_instance</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classprophet_1_1Encounter.html#e978d161b459e4350fb4dd1acaeb0ddc" title="local&amp;#39;s instance for remote">local_instance_</a>; }
<a name="l00111"></a><a class="code" href="classprophet_1_1Encounter.html#d8b0702cd9e4619442eea4d94a6ca7cf">00111</a>     <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classprophet_1_1Encounter.html#d8b0702cd9e4619442eea4d94a6ca7cf" title="Accessors.">remote_eid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classprophet_1_1Encounter.html#7bf7fde97405ea98fd56a03277473f4b" title="Link object for this encounter.">next_hop_</a>-&gt;<a class="code" href="classprophet_1_1Link.html#4c7e5be6a49b400be9e07db823b7f301" title="Accessors.">remote_eid</a>(); }
<a name="l00112"></a><a class="code" href="classprophet_1_1Encounter.html#3938ffb4381ec57f28af815d9fe0d2c2">00112</a>     <span class="keyword">const</span> <a class="code" href="classprophet_1_1Link.html">Link</a>* <a class="code" href="classprophet_1_1Encounter.html#3938ffb4381ec57f28af815d9fe0d2c2" title="Accessors.">nexthop</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classprophet_1_1Encounter.html#7bf7fde97405ea98fd56a03277473f4b" title="Link object for this encounter.">next_hop_</a>; }
<a name="l00113"></a><a class="code" href="classprophet_1_1Encounter.html#378c28e2475cd792805ad40aa5c003fe">00113</a>     <a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9">state_t</a>     <a class="code" href="classprophet_1_1Encounter.html#378c28e2475cd792805ad40aa5c003fe" title="Accessors.">state</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classprophet_1_1Encounter.html#6f07066a9979e1d49b13a7176d18f29d" title="which phase of Prophet protocol for this end">state_</a>; }
<a name="l00114"></a><a class="code" href="classprophet_1_1Encounter.html#29afd890387d09c831daff5f9f986167">00114</a>     <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classprophet_1_1Encounter.html#29afd890387d09c831daff5f9f986167" title="Accessors.">state_str</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classprophet_1_1Encounter.html#b24589d67c7f680718ced5815f51f555">state_to_str</a>(<a class="code" href="classprophet_1_1Encounter.html#6f07066a9979e1d49b13a7176d18f29d" title="which phase of Prophet protocol for this end">state_</a>); }
<a name="l00115"></a><a class="code" href="classprophet_1_1Encounter.html#bace35e3492f2fff444020cc619a8c43">00115</a>     <span class="keywordtype">bool</span>        <a class="code" href="classprophet_1_1Encounter.html#bace35e3492f2fff444020cc619a8c43" title="Accessors.">neighbor_gone</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classprophet_1_1Encounter.html#e9f139410992a56d81a29ecd577c942b" title="whether session has died">neighbor_gone_</a>; }
<a name="l00116"></a><a class="code" href="classprophet_1_1Encounter.html#8086d7dc3698532fd920410ec13892c9">00116</a>     u_int       <a class="code" href="classprophet_1_1Encounter.html#8086d7dc3698532fd920410ec13892c9" title="Accessors.">time_remaining</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classprophet_1_1Encounter.html#72d6bb97059b7a3f95da99df8d651104" title="callback registration for timeout handler">alarm_</a>-&gt;<a class="code" href="classprophet_1_1Alarm.html#3304d46e4d44b59e1e2387c7c2f3bb07" title="Milliseconds remaining until alarm expires.">time_remaining</a>(); }
<a name="l00118"></a>00118 
<a name="l00123"></a>00123     <span class="keywordtype">void</span> <a class="code" href="classprophet_1_1Encounter.html#8dce4c9bb4cc1fc2efe909cf08f77e69" title="Callback to inform this instance that the hello_interval parameter has changed.">hello_interval_changed</a>();
<a name="l00124"></a>00124 
<a name="l00131"></a>00131     <span class="keywordtype">bool</span> <a class="code" href="classprophet_1_1Encounter.html#3d3f02812aef29011d48dbbe591ed2f3" title="Callback for this instance to receive TLVs received from peer by the host bundling...">receive_tlv</a>(<a class="code" href="classprophet_1_1ProphetTLV.html">ProphetTLV</a>* tlv);
<a name="l00132"></a>00132 
<a name="l00137"></a>00137     <span class="keywordtype">void</span> <a class="code" href="classprophet_1_1Encounter.html#ebc5ed549f612cf97e09f89bb784fec1" title="Callback for timeout handler, either due to peer failure or unacceptable delay in...">handle_timeout</a>();
<a name="l00138"></a>00138 
<a name="l00142"></a>00142     <span class="keywordtype">void</span> <a class="code" href="classprophet_1_1Encounter.html#1d62a8ce7eea8f426c5843689b880ca6" title="Callback for tracking which Bundle requests are outstanding.">handle_bundle_received</a>(<span class="keyword">const</span> <a class="code" href="classprophet_1_1Bundle.html" title="Facade interface between Prophet router and host implmentation&amp;#39;s Bundle representation...">Bundle</a>* b);
<a name="l00143"></a>00143 
<a name="l00144"></a>00144 <span class="keyword">protected</span>:
<a name="l00145"></a>00145 
<a name="l00147"></a>00147     <span class="keywordtype">bool</span> <a class="code" href="classprophet_1_1Encounter.html#a61d73158f13d285348328ea06663e29" title="TLV event handlers.">dispatch_tlv</a>(<a class="code" href="classprophet_1_1BaseTLV.html" title="The Prophet I-D (March 2006) dictates five bytecodes for router state exchange messages...">BaseTLV</a>* tlv);
<a name="l00148"></a>00148     <span class="keywordtype">bool</span> <a class="code" href="classprophet_1_1Encounter.html#cfdcc4293d4c0d5b7d7b2210756b2017" title="TLV event handlers.">handle_hello_tlv</a>(<a class="code" href="classprophet_1_1BaseTLV.html" title="The Prophet I-D (March 2006) dictates five bytecodes for router state exchange messages...">BaseTLV</a>* hello);
<a name="l00149"></a>00149     <span class="keywordtype">bool</span> <a class="code" href="classprophet_1_1Encounter.html#297f041c3caed38713c7b17929413bab" title="TLV event handlers.">handle_ribd_tlv</a>(<a class="code" href="classprophet_1_1BaseTLV.html" title="The Prophet I-D (March 2006) dictates five bytecodes for router state exchange messages...">BaseTLV</a>* ribd);
<a name="l00150"></a>00150     <span class="keywordtype">bool</span> <a class="code" href="classprophet_1_1Encounter.html#52e9cf2bbc6ebbdc4e5e9d60be5872b2" title="TLV event handlers.">handle_rib_tlv</a>(<a class="code" href="classprophet_1_1BaseTLV.html" title="The Prophet I-D (March 2006) dictates five bytecodes for router state exchange messages...">BaseTLV</a>* rib);
<a name="l00151"></a>00151     <span class="keywordtype">bool</span> <a class="code" href="classprophet_1_1Encounter.html#33c6d357ceda1195e9178d42c3030f90" title="TLV event handlers.">handle_offer_tlv</a>(<a class="code" href="classprophet_1_1BaseTLV.html" title="The Prophet I-D (March 2006) dictates five bytecodes for router state exchange messages...">BaseTLV</a>* offer);
<a name="l00152"></a>00152     <span class="keywordtype">bool</span> <a class="code" href="classprophet_1_1Encounter.html#b67d2d226d5dda9e658757230d19db6b" title="TLV event handlers.">handle_response_tlv</a>(<a class="code" href="classprophet_1_1BaseTLV.html" title="The Prophet I-D (March 2006) dictates five bytecodes for router state exchange messages...">BaseTLV</a>* response);
<a name="l00154"></a>00154 
<a name="l00156"></a>00156     <span class="keywordtype">bool</span> <a class="code" href="classprophet_1_1Encounter.html#1e721a221679035f7d2f89198480cf2e" title="Outbound message generators.">send_hello</a>(<a class="code" href="classprophet_1_1HelloTLV.html#4b04d76a4e7cc392b21552173c2bba08" title="Legal values for HelloTLVHeader.HF (hello function) p.">HelloTLV::hello_hf_t</a> hf,
<a name="l00157"></a>00157                     <a class="code" href="classprophet_1_1ProphetTLV.html#8612aff33b50bae0e7005ef59d14c274" title="Legal values for ProphetHeader.result field p.">ProphetTLV::header_result_t</a> hr = <a class="code" href="classprophet_1_1ProphetTLV.html#8612aff33b50bae0e7005ef59d14c2749c93217fcbdbee38f439bcef5a4dd647">ProphetTLV::NoSuccessAck</a>,
<a name="l00158"></a>00158                     u_int32_t tid = 0);
<a name="l00159"></a>00159     <span class="keywordtype">bool</span> <a class="code" href="classprophet_1_1Encounter.html#46ab51230d1ee5896c45da39c28dbf81" title="Outbound message generators.">send_dictionary_rib</a>(<a class="code" href="classprophet_1_1ProphetTLV.html#8612aff33b50bae0e7005ef59d14c274" title="Legal values for ProphetHeader.result field p.">ProphetTLV::header_result_t</a> hr =
<a name="l00160"></a>00160                                                     <a class="code" href="classprophet_1_1ProphetTLV.html#8612aff33b50bae0e7005ef59d14c2749c93217fcbdbee38f439bcef5a4dd647">ProphetTLV::NoSuccessAck</a>,
<a name="l00161"></a>00161                              u_int32_t tid = 0);
<a name="l00162"></a>00162     <span class="keywordtype">bool</span> <a class="code" href="classprophet_1_1Encounter.html#1c8d26e2aa0a4915507096fe030f381e" title="Outbound message generators.">send_offer</a>(<a class="code" href="classprophet_1_1ProphetTLV.html#8612aff33b50bae0e7005ef59d14c274" title="Legal values for ProphetHeader.result field p.">ProphetTLV::header_result_t</a> hr = <a class="code" href="classprophet_1_1ProphetTLV.html#8612aff33b50bae0e7005ef59d14c2749c93217fcbdbee38f439bcef5a4dd647">ProphetTLV::NoSuccessAck</a>,
<a name="l00163"></a>00163                     u_int32_t tid = 0);
<a name="l00164"></a>00164     <span class="keywordtype">bool</span> <a class="code" href="classprophet_1_1Encounter.html#af173084198151f0ff6279aa2c6116a2" title="Outbound message generators.">send_response</a>(<a class="code" href="classprophet_1_1ProphetTLV.html#8612aff33b50bae0e7005ef59d14c274" title="Legal values for ProphetHeader.result field p.">ProphetTLV::header_result_t</a> hr =
<a name="l00165"></a>00165                                                      <a class="code" href="classprophet_1_1ProphetTLV.html#8612aff33b50bae0e7005ef59d14c2749c93217fcbdbee38f439bcef5a4dd647">ProphetTLV::NoSuccessAck</a>,
<a name="l00166"></a>00166                        u_int32_t tid = 0);
<a name="l00167"></a>00167     <span class="keywordtype">bool</span> <a class="code" href="classprophet_1_1Encounter.html#e33cc3f09c71a267362b86046dbb2b86" title="Outbound message generators.">send_tlv</a>(<a class="code" href="classprophet_1_1ProphetTLV.html">ProphetTLV</a>* tlv);
<a name="l00169"></a>00169 
<a name="l00170"></a><a class="code" href="classprophet_1_1Encounter.html#76a46b0ad1fb086399ae22907fe48589">00170</a>     Oracle* <span class="keyword">const</span> <a class="code" href="classprophet_1_1Encounter.html#76a46b0ad1fb086399ae22907fe48589" title="collection of Prophet information">oracle_</a>; 
<a name="l00171"></a><a class="code" href="classprophet_1_1Encounter.html#e978d161b459e4350fb4dd1acaeb0ddc">00171</a>     u_int16_t <a class="code" href="classprophet_1_1Encounter.html#e978d161b459e4350fb4dd1acaeb0ddc" title="local&amp;#39;s instance for remote">local_instance_</a>; 
<a name="l00172"></a><a class="code" href="classprophet_1_1Encounter.html#30722ad51662188f150b8114943d00d3">00172</a>     u_int16_t <a class="code" href="classprophet_1_1Encounter.html#30722ad51662188f150b8114943d00d3" title="remote&amp;#39;s instance for local">remote_instance_</a>; 
<a name="l00173"></a><a class="code" href="classprophet_1_1Encounter.html#7ba64ba005bcb359316fded654fc3883">00173</a>     u_int32_t <a class="code" href="classprophet_1_1Encounter.html#7ba64ba005bcb359316fded654fc3883" title="transaction id from peer&amp;#39;s most recent TLV">tid_</a>; 
<a name="l00174"></a><a class="code" href="classprophet_1_1Encounter.html#cdeaffb13c308a4e835f32d38a169840">00174</a>     u_int32_t <a class="code" href="classprophet_1_1Encounter.html#cdeaffb13c308a4e835f32d38a169840" title="used to generate TID for outbound TLVs">next_tid_</a>; 
<a name="l00175"></a><a class="code" href="classprophet_1_1Encounter.html#20c93f4a52b104b0bd22241d9bd911e6">00175</a>     u_int32_t <a class="code" href="classprophet_1_1Encounter.html#20c93f4a52b104b0bd22241d9bd911e6" title="most milliseconds expected between TLVs">timeout_</a>; 
<a name="l00176"></a><a class="code" href="classprophet_1_1Encounter.html#7bf7fde97405ea98fd56a03277473f4b">00176</a>     <span class="keyword">const</span> <a class="code" href="classprophet_1_1Link.html">Link</a>* <a class="code" href="classprophet_1_1Encounter.html#7bf7fde97405ea98fd56a03277473f4b" title="Link object for this encounter.">next_hop_</a>; 
<a name="l00177"></a><a class="code" href="classprophet_1_1Encounter.html#46fd749eff1748e5a9d1e5e6ac4ad287">00177</a>     <a class="code" href="classprophet_1_1ProphetTLV.html">ProphetTLV</a>* <a class="code" href="classprophet_1_1Encounter.html#46fd749eff1748e5a9d1e5e6ac4ad287" title="most recent message received from peer">tlv_</a>; 
<a name="l00178"></a><a class="code" href="classprophet_1_1Encounter.html#b3bc25ef1299fe8f7eeb0c89d2d75cb2">00178</a>     <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="classprophet_1_1Encounter.html#b3bc25ef1299fe8f7eeb0c89d2d75cb2" title="whether active or passive during Hello phase">synsender_</a>; 
<a name="l00179"></a><a class="code" href="classprophet_1_1Encounter.html#6f07066a9979e1d49b13a7176d18f29d">00179</a>     <a class="code" href="classprophet_1_1Encounter.html#292f67509d9bfe88204d5b2b5c671eb9">state_t</a> <a class="code" href="classprophet_1_1Encounter.html#6f07066a9979e1d49b13a7176d18f29d" title="which phase of Prophet protocol for this end">state_</a>; 
<a name="l00180"></a><a class="code" href="classprophet_1_1Encounter.html#1fbf82b8dadfefbfcce1098c1c243503">00180</a>     <span class="keywordtype">bool</span> <a class="code" href="classprophet_1_1Encounter.html#1fbf82b8dadfefbfcce1098c1c243503" title="whether hello phase has sent SYN or SYNACK">synsent_</a>; 
<a name="l00181"></a><a class="code" href="classprophet_1_1Encounter.html#e238b62757f4ee78b49f5276d1a48fe9">00181</a>     <span class="keywordtype">bool</span> <a class="code" href="classprophet_1_1Encounter.html#e238b62757f4ee78b49f5276d1a48fe9" title="whether hello phase has been completed">estab_</a>; 
<a name="l00182"></a><a class="code" href="classprophet_1_1Encounter.html#e9f139410992a56d81a29ecd577c942b">00182</a>     <span class="keyword">volatile</span> <span class="keywordtype">bool</span> <a class="code" href="classprophet_1_1Encounter.html#e9f139410992a56d81a29ecd577c942b" title="whether session has died">neighbor_gone_</a>; 
<a name="l00183"></a><a class="code" href="classprophet_1_1Encounter.html#c5202b80af6ce4c24c5a7040f4711630">00183</a>     <a class="code" href="classprophet_1_1Dictionary.html" title="Utility class to facilitate converting to and from routing string (endpoint ID) and...">Dictionary</a> <a class="code" href="classprophet_1_1Encounter.html#c5202b80af6ce4c24c5a7040f4711630" title="16 bit index lookup to translate routes">local_ribd_</a>; 
<a name="l00184"></a><a class="code" href="classprophet_1_1Encounter.html#c32d3450a3fd29393a36ccca72f6f4be">00184</a>     <a class="code" href="classprophet_1_1Dictionary.html" title="Utility class to facilitate converting to and from routing string (endpoint ID) and...">Dictionary</a> <a class="code" href="classprophet_1_1Encounter.html#c32d3450a3fd29393a36ccca72f6f4be" title="16 bit index lookup for remote&amp;#39;s routes">remote_ribd_</a>; 
<a name="l00185"></a><a class="code" href="classprophet_1_1Encounter.html#79d869e2ea45af225b17286e2d668215">00185</a>     <a class="code" href="classprophet_1_1BundleOfferList.html" title="In-memory representation of list of bundle offer entries from a Bundle TLV sent by...">BundleOfferList</a> <a class="code" href="classprophet_1_1Encounter.html#79d869e2ea45af225b17286e2d668215" title="in-memory rep of remote&amp;#39;s offer">remote_offers_</a>; 
<a name="l00186"></a><a class="code" href="classprophet_1_1Encounter.html#64f6afe27359158d10c144ea4fc9382b">00186</a>     <a class="code" href="classprophet_1_1BundleResponseList.html" title="In-memory representation of list of bundle response entries from a Bundle TLV sent...">BundleResponseList</a> <a class="code" href="classprophet_1_1Encounter.html#64f6afe27359158d10c144ea4fc9382b" title="Bundle requests sent to peer.">local_response_</a>; 
<a name="l00187"></a><a class="code" href="classprophet_1_1Encounter.html#6381c030b727bd6ebf3be5a5d52c9548">00187</a>     <a class="code" href="classprophet_1_1Table.html" title="Container for Prophet nodes (routes and predictability values).">Table</a> <a class="code" href="classprophet_1_1Encounter.html#6381c030b727bd6ebf3be5a5d52c9548" title="in-memory representation of remote&amp;#39;s RIB">remote_nodes_</a>; 
<a name="l00188"></a><a class="code" href="classprophet_1_1Encounter.html#a4dc90bec21c7bf4f86d8a90c34194f5">00188</a>     u_int <a class="code" href="classprophet_1_1Encounter.html#a4dc90bec21c7bf4f86d8a90c34194f5" title="simple flow control for Hello messages (ACK, etc)">hello_rate_</a>; 
<a name="l00189"></a><a class="code" href="classprophet_1_1Encounter.html#3a20faebcc6db252a1a6a61d1fbda159">00189</a>     u_int32_t <a class="code" href="classprophet_1_1Encounter.html#3a20faebcc6db252a1a6a61d1fbda159" title="timestamp of last TLV sent">data_sent_</a>; 
<a name="l00190"></a><a class="code" href="classprophet_1_1Encounter.html#a7c56932996f9ce6b5e277f98a047cef">00190</a>     u_int32_t <a class="code" href="classprophet_1_1Encounter.html#a7c56932996f9ce6b5e277f98a047cef" title="timestamp of last TLV received">data_rcvd_</a>; 
<a name="l00191"></a><a class="code" href="classprophet_1_1Encounter.html#72d6bb97059b7a3f95da99df8d651104">00191</a>     <a class="code" href="classprophet_1_1Alarm.html" title="Alarm registration.">Alarm</a>* <a class="code" href="classprophet_1_1Encounter.html#72d6bb97059b7a3f95da99df8d651104" title="callback registration for timeout handler">alarm_</a>; 
<a name="l00192"></a>00192 }; <span class="comment">// class Encounter</span>
<a name="l00193"></a>00193 
<a name="l00194"></a>00194 }; <span class="comment">// namespace prophet</span>
<a name="l00195"></a>00195 
<a name="l00196"></a>00196 <span class="preprocessor">#endif // _PROPHET_ENCOUNTER_H_</span>
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 30 09:26:56 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>