Sophie

Sophie

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

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: BundleDaemon.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>BundleDaemon.h</h1><a href="BundleDaemon_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 2004-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_DAEMON_H_</span>
<a name="l00018"></a>00018 <span class="preprocessor"></span><span class="preprocessor">#define _BUNDLE_DAEMON_H_</span>
<a name="l00019"></a>00019 <span class="preprocessor"></span>
<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;vector&gt;</span>
<a name="l00021"></a>00021 
<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;oasys/compat/inttypes.h&gt;</span>
<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;oasys/debug/Log.h&gt;</span>
<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;oasys/tclcmd/IdleTclExit.h&gt;</span>
<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;oasys/thread/Timer.h&gt;</span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;oasys/thread/Thread.h&gt;</span>
<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;oasys/thread/MsgQueue.h&gt;</span>
<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;oasys/util/StringBuffer.h&gt;</span>
<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;oasys/util/Time.h&gt;</span>
<a name="l00030"></a>00030 
<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="BundleEvent_8h.html">BundleEvent.h</a>"</span>
<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="BundleEventHandler_8h.html">BundleEventHandler.h</a>"</span>
<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="BundleProtocol_8h.html">BundleProtocol.h</a>"</span>
<a name="l00034"></a>00034 <span class="preprocessor">#include "<a class="code" href="BundleActions_8h.html">BundleActions.h</a>"</span>
<a name="l00035"></a>00035 <span class="preprocessor">#include "<a class="code" href="BundleStatusReport_8h.html">BundleStatusReport.h</a>"</span>
<a name="l00036"></a>00036 
<a name="l00037"></a>00037 <span class="keyword">namespace </span>dtn {
<a name="l00038"></a>00038 
<a name="l00039"></a>00039 <span class="keyword">class </span>AdminRegistration;
<a name="l00040"></a>00040 <span class="keyword">class </span>Bundle;
<a name="l00041"></a>00041 <span class="keyword">class </span>BundleAction;
<a name="l00042"></a>00042 <span class="keyword">class </span>BundleActions;
<a name="l00043"></a>00043 <span class="keyword">class </span>BundleList;
<a name="l00044"></a>00044 <span class="keyword">class </span>BundleRouter;
<a name="l00045"></a>00045 <span class="keyword">class </span>ContactManager;
<a name="l00046"></a>00046 <span class="keyword">class </span>FragmentManager;
<a name="l00047"></a>00047 <span class="keyword">class </span>PingRegistration;
<a name="l00048"></a>00048 <span class="keyword">class </span>RegistrationTable;
<a name="l00049"></a>00049 
<a name="l00057"></a><a class="code" href="classdtn_1_1BundleDaemon.html">00057</a> <span class="keyword">class </span><a class="code" href="classdtn_1_1BundleDaemon.html" title="Class that handles the basic event / action mechanism.">BundleDaemon</a> : <span class="keyword">public</span> oasys::Singleton&lt;BundleDaemon, false&gt;,
<a name="l00058"></a>00058                      <span class="keyword">public</span> <a class="code" href="classdtn_1_1BundleEventHandler.html" title="Both the BundleDaemon and all the BundleRouter classes need to process the various...">BundleEventHandler</a>,
<a name="l00059"></a>00059                      <span class="keyword">public</span> oasys::Thread
<a name="l00060"></a>00060 {
<a name="l00061"></a>00061 <span class="keyword">public</span>:
<a name="l00065"></a>00065     <a class="code" href="classdtn_1_1BundleDaemon.html#e9228d805e49a4c79603b3bf411cfbb6" title="Constructor.">BundleDaemon</a>();
<a name="l00066"></a>00066 
<a name="l00070"></a>00070     <span class="keyword">virtual</span> <a class="code" href="classdtn_1_1BundleDaemon.html#31f79197d40a3aa8a47647bd72184dc2" title="Destructor (called at shutdown time).">~BundleDaemon</a>();
<a name="l00071"></a>00071 
<a name="l00077"></a>00077     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#a4b439cac8064f409fdc44667c75cb54" title="Virtual initialization function, overridden in the simulator to install the modified...">do_init</a>();
<a name="l00078"></a>00078     
<a name="l00082"></a><a class="code" href="classdtn_1_1BundleDaemon.html#0bf8ed74f59296b161f18a1b289c6548">00082</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#0bf8ed74f59296b161f18a1b289c6548" title="Boot time initializer.">init</a>()
<a name="l00083"></a>00083     {       
<a name="l00084"></a>00084         <span class="keywordflow">if</span> (instance_ != NULL) 
<a name="l00085"></a>00085         {
<a name="l00086"></a>00086             PANIC(<span class="stringliteral">"BundleDaemon already initialized"</span>);
<a name="l00087"></a>00087         }
<a name="l00088"></a>00088 
<a name="l00089"></a>00089         instance_ = <span class="keyword">new</span> <a class="code" href="classdtn_1_1BundleDaemon.html#e9228d805e49a4c79603b3bf411cfbb6" title="Constructor.">BundleDaemon</a>();     
<a name="l00090"></a>00090         instance_-&gt;do_init();
<a name="l00091"></a>00091     }
<a name="l00092"></a>00092     
<a name="l00098"></a><a class="code" href="classdtn_1_1BundleDaemon.html#b73dfc9eeffef373061d4e37b7200d97">00098</a>     <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classdtn_1_1BundleDaemon.html#b73dfc9eeffef373061d4e37b7200d97" title="Return the number of events currently waiting for processing.">event_queue_size</a>()
<a name="l00099"></a>00099     {
<a name="l00100"></a>00100         <span class="keywordflow">return</span> <a class="code" href="classdtn_1_1BundleDaemon.html#4c63dbe82dd1b3692d9748a32c859373" title="The event queue.">eventq_</a>-&gt;size();
<a name="l00101"></a>00101     }
<a name="l00102"></a>00102 
<a name="l00107"></a>00107     <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#370a80f7dd9fd9297e76d7f830d737a8" title="Queues the event at the tail of the queue for processing by the daemon thread.">post</a>(<a class="code" href="classdtn_1_1BundleEvent.html" title="Event base class.">BundleEvent</a>* event);
<a name="l00108"></a>00108  
<a name="l00113"></a>00113     <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#c7f41d180e271e74b1c7cd71f2577686" title="Queues the event at the head of the queue for processing by the daemon thread.">post_at_head</a>(<a class="code" href="classdtn_1_1BundleEvent.html" title="Event base class.">BundleEvent</a>* event);
<a name="l00114"></a>00114     
<a name="l00119"></a>00119     <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classdtn_1_1BundleDaemon.html#bb88ebba32e4e95a96ee76b3f91d9052" title="Post the given event and wait for it to be processed by the daemon thread or for...">post_and_wait</a>(<a class="code" href="classdtn_1_1BundleEvent.html" title="Event base class.">BundleEvent</a>* event,
<a name="l00120"></a>00120                               oasys::Notifier* notifier,
<a name="l00121"></a>00121                               <span class="keywordtype">int</span> timeout = -1, <span class="keywordtype">bool</span> at_back = <span class="keyword">true</span>);
<a name="l00122"></a>00122     
<a name="l00127"></a>00127     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#3c63c969b96224e51d30adef9357f38c" title="Virtual post_event function, overridden by the Node class in the simulator to use...">post_event</a>(<a class="code" href="classdtn_1_1BundleEvent.html" title="Event base class.">BundleEvent</a>* event, <span class="keywordtype">bool</span> at_back = <span class="keyword">true</span>);
<a name="l00128"></a>00128 
<a name="l00132"></a><a class="code" href="classdtn_1_1BundleDaemon.html#041a5174490d7d946b4c32a7a3e37a81">00132</a>     <a class="code" href="classdtn_1_1BundleRouter.html" title="The BundleRouter is the main decision maker for all routing decisions related to...">BundleRouter</a>* <a class="code" href="classdtn_1_1BundleDaemon.html#041a5174490d7d946b4c32a7a3e37a81" title="Returns the current bundle router.">router</a>()
<a name="l00133"></a>00133     {
<a name="l00134"></a>00134         <a class="code" href="SDNV_8cc.html#ca68c0d4ac8df0838e209fb5300f7be3">ASSERT</a>(<a class="code" href="classdtn_1_1BundleDaemon.html#a5c8a244aad225987f9359ee1c2a1101" title="The active bundle router.">router_</a> != NULL);
<a name="l00135"></a>00135         <span class="keywordflow">return</span> <a class="code" href="classdtn_1_1BundleDaemon.html#a5c8a244aad225987f9359ee1c2a1101" title="The active bundle router.">router_</a>;
<a name="l00136"></a>00136     }
<a name="l00137"></a>00137 
<a name="l00141"></a><a class="code" href="classdtn_1_1BundleDaemon.html#954116c37fd4ba16510c9f09fedc7dae">00141</a>     <a class="code" href="classdtn_1_1BundleActions.html" title="Intermediary class that provides a utility interface to help routers more easily...">BundleActions</a>* <a class="code" href="classdtn_1_1BundleDaemon.html#954116c37fd4ba16510c9f09fedc7dae" title="Return the current actions handler.">actions</a>() { <span class="keywordflow">return</span> <a class="code" href="classdtn_1_1BundleDaemon.html#83688d1a99907ab38c64cd4ddb443358" title="The active bundle actions handler.">actions_</a>; }
<a name="l00142"></a>00142 
<a name="l00146"></a><a class="code" href="classdtn_1_1BundleDaemon.html#22515a3eddd14032172f89d06d8d4e46">00146</a>     <a class="code" href="classdtn_1_1ContactManager.html" title="A contact manager class.">ContactManager</a>* <a class="code" href="classdtn_1_1BundleDaemon.html#22515a3eddd14032172f89d06d8d4e46" title="Accessor for the contact manager.">contactmgr</a>() { <span class="keywordflow">return</span> <a class="code" href="classdtn_1_1BundleDaemon.html#032fa1c5998c5e037ed54d4734f6807f" title="The contact manager.">contactmgr_</a>; }
<a name="l00147"></a>00147 
<a name="l00151"></a><a class="code" href="classdtn_1_1BundleDaemon.html#458fcfae746087b23f6e727e15e90165">00151</a>     <a class="code" href="classdtn_1_1FragmentManager.html" title="The Fragment Manager maintains state for all of the fragmentary bundles, reconstructing...">FragmentManager</a>* <a class="code" href="classdtn_1_1BundleDaemon.html#458fcfae746087b23f6e727e15e90165" title="Accessor for the fragmentation manager.">fragmentmgr</a>() { <span class="keywordflow">return</span> <a class="code" href="classdtn_1_1BundleDaemon.html#a0a2294a38635f5f76aba4375b0c2f7d" title="The fragmentation / reassembly manager.">fragmentmgr_</a>; }
<a name="l00152"></a>00152 
<a name="l00156"></a><a class="code" href="classdtn_1_1BundleDaemon.html#ad2af770f1002bb8b3a15e11704928de">00156</a>     <span class="keyword">const</span> <a class="code" href="classdtn_1_1RegistrationTable.html" title="Class for the in-memory registration table.">RegistrationTable</a>* <a class="code" href="classdtn_1_1BundleDaemon.html#ad2af770f1002bb8b3a15e11704928de" title="Accessor for the registration table.">reg_table</a>() { <span class="keywordflow">return</span> <a class="code" href="classdtn_1_1BundleDaemon.html#f0b116c3ae390f0032049f376e3a2eec" title="The table of active registrations.">reg_table_</a>; }
<a name="l00157"></a>00157 
<a name="l00161"></a><a class="code" href="classdtn_1_1BundleDaemon.html#99030fd37a2c2b727b5e6c64962d6709">00161</a>     <a class="code" href="classdtn_1_1BundleList.html" title="List structure for handling bundles.">BundleList</a>* <a class="code" href="classdtn_1_1BundleDaemon.html#99030fd37a2c2b727b5e6c64962d6709" title="Accessor for the pending bundles list.">pending_bundles</a>() { <span class="keywordflow">return</span> <a class="code" href="classdtn_1_1BundleDaemon.html#48dbdf23301f10dc3f1121913a023195" title="The list of all bundles still pending delivery.">pending_bundles_</a>; }
<a name="l00162"></a>00162     
<a name="l00166"></a><a class="code" href="classdtn_1_1BundleDaemon.html#31a9fb9e637b0dfcf80d7e333ac5381d">00166</a>     <a class="code" href="classdtn_1_1BundleList.html" title="List structure for handling bundles.">BundleList</a>* <a class="code" href="classdtn_1_1BundleDaemon.html#31a9fb9e637b0dfcf80d7e333ac5381d" title="Accessor for the custody bundles list.">custody_bundles</a>() { <span class="keywordflow">return</span> <a class="code" href="classdtn_1_1BundleDaemon.html#ce140ab25aea62199a71e73e216845a5" title="The list of all bundles that we have custody of.">custody_bundles_</a>; }
<a name="l00167"></a>00167     
<a name="l00171"></a>00171     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#7f22930edb2b015bfda7c2da7bc940e4" title="Format the given StringBuffer with current routing info.">get_routing_state</a>(oasys::StringBuffer* <a class="code" href="num2sdnv_8c.html#a81cdcc7ff6987bc85c073253e32715f">buf</a>);
<a name="l00172"></a>00172 
<a name="l00177"></a>00177     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#77bfc10515128e094c60601a5495de42" title="Format the given StringBuffer with the current bundle statistics.">get_bundle_stats</a>(oasys::StringBuffer* <a class="code" href="num2sdnv_8c.html#a81cdcc7ff6987bc85c073253e32715f">buf</a>);
<a name="l00178"></a>00178 
<a name="l00183"></a>00183     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#b5e5053414a64e261406765307dc1f70" title="Format the given StringBuffer with the current internal statistics value.">get_daemon_stats</a>(oasys::StringBuffer* <a class="code" href="num2sdnv_8c.html#a81cdcc7ff6987bc85c073253e32715f">buf</a>);
<a name="l00184"></a>00184 
<a name="l00188"></a>00188     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#a0cca034eee158ec64cf4e29ba353a87" title="Reset all internal stats.">reset_stats</a>();
<a name="l00189"></a>00189 
<a name="l00193"></a><a class="code" href="classdtn_1_1BundleDaemon.html#f606a71844413e32918c9c3e98b8ce3f">00193</a>     <span class="keyword">const</span> <a class="code" href="classdtn_1_1EndpointID.html">EndpointID</a>&amp; <a class="code" href="classdtn_1_1BundleDaemon.html#f606a71844413e32918c9c3e98b8ce3f" title="Return the local endpoint identifier.">local_eid</a>() { <span class="keywordflow">return</span> <a class="code" href="classdtn_1_1BundleDaemon.html#bb461f7084ac3cf8c88ecff1a2686bcf" title="The default endpoint id for reaching this daemon, used for bundle status reports...">local_eid_</a>; }
<a name="l00194"></a>00194 
<a name="l00198"></a><a class="code" href="classdtn_1_1BundleDaemon.html#eb057bea64a8fe8a24b1ff193ef7953e">00198</a>     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#eb057bea64a8fe8a24b1ff193ef7953e" title="Set the local endpoint id.">set_local_eid</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* eid_str) {
<a name="l00199"></a>00199         <a class="code" href="classdtn_1_1BundleDaemon.html#bb461f7084ac3cf8c88ecff1a2686bcf" title="The default endpoint id for reaching this daemon, used for bundle status reports...">local_eid_</a>.<a class="code" href="classdtn_1_1EndpointID.html#ec39752e4da3107b16ff5da58d2aa5ab" title="Assign this endpoint ID as a copy of the other.">assign</a>(eid_str);
<a name="l00200"></a>00200     }
<a name="l00201"></a>00201 
<a name="l00205"></a><a class="code" href="structdtn_1_1BundleDaemon_1_1Params.html">00205</a>     <span class="keyword">struct </span><a class="code" href="structdtn_1_1BundleDaemon_1_1Params.html" title="General daemon parameters.">Params</a> {
<a name="l00207"></a>00207         <a class="code" href="structdtn_1_1BundleDaemon_1_1Params.html#7d8d69e0ac04f00371dc4a9d76884ad4" title="Default constructor.">Params</a>();
<a name="l00208"></a>00208         
<a name="l00211"></a><a class="code" href="structdtn_1_1BundleDaemon_1_1Params.html#709968d52fafe93f350b02a202e3b6d4">00211</a>         <span class="keywordtype">bool</span> <a class="code" href="structdtn_1_1BundleDaemon_1_1Params.html#709968d52fafe93f350b02a202e3b6d4" title="Whether or not to delete bundles before they&amp;#39;re expired if all routers / registrations...">early_deletion_</a>;
<a name="l00212"></a>00212 
<a name="l00215"></a><a class="code" href="structdtn_1_1BundleDaemon_1_1Params.html#44979b5e20d25f2cf0e1203bd89519f4">00215</a>         <span class="keywordtype">bool</span> <a class="code" href="structdtn_1_1BundleDaemon_1_1Params.html#44979b5e20d25f2cf0e1203bd89519f4" title="Whether or not to skip routing decisions for and delete duplicate bundles.">suppress_duplicates_</a>;
<a name="l00216"></a>00216 
<a name="l00218"></a><a class="code" href="structdtn_1_1BundleDaemon_1_1Params.html#59df7c4162a660666ad6bc047cda72df">00218</a>         <span class="keywordtype">bool</span> <a class="code" href="structdtn_1_1BundleDaemon_1_1Params.html#59df7c4162a660666ad6bc047cda72df" title="Whether or not to accept custody when requested.">accept_custody_</a>;
<a name="l00219"></a>00219 
<a name="l00221"></a><a class="code" href="structdtn_1_1BundleDaemon_1_1Params.html#87cc471cd25d3084e84e6724e0eef512">00221</a>         <span class="keywordtype">bool</span> <a class="code" href="structdtn_1_1BundleDaemon_1_1Params.html#87cc471cd25d3084e84e6724e0eef512" title="Whether or not reactive fragmentation is enabled.">reactive_frag_enabled_</a>;
<a name="l00222"></a>00222         
<a name="l00224"></a><a class="code" href="structdtn_1_1BundleDaemon_1_1Params.html#8ef371f4a6139e23d45997659c24542a">00224</a>         <span class="keywordtype">bool</span> <a class="code" href="structdtn_1_1BundleDaemon_1_1Params.html#8ef371f4a6139e23d45997659c24542a" title="Whether or not to retry unacked transmissions on reliable CLs.">retry_reliable_unacked_</a>;
<a name="l00225"></a>00225 
<a name="l00227"></a><a class="code" href="structdtn_1_1BundleDaemon_1_1Params.html#b8f3765cc928c5b88cf703e992e97aca">00227</a>         <span class="keywordtype">bool</span> <a class="code" href="structdtn_1_1BundleDaemon_1_1Params.html#b8f3765cc928c5b88cf703e992e97aca" title="Test hook to permute bundles before delivering to registrations.">test_permuted_delivery_</a>;
<a name="l00228"></a>00228 
<a name="l00230"></a><a class="code" href="structdtn_1_1BundleDaemon_1_1Params.html#a489cee8dad886e60025720b7d1162cb">00230</a>         <span class="keywordtype">bool</span> <a class="code" href="structdtn_1_1BundleDaemon_1_1Params.html#a489cee8dad886e60025720b7d1162cb" title="Whether or not injected bundles are held in memory by default.">injected_bundles_in_memory_</a>;
<a name="l00231"></a>00231     };
<a name="l00232"></a>00232 
<a name="l00233"></a><a class="code" href="classdtn_1_1BundleDaemon.html#a18fd65ff3e11b985f3e04a4591d4a33">00233</a>     <span class="keyword">static</span> <a class="code" href="structdtn_1_1BundleDaemon_1_1Params.html" title="General daemon parameters.">Params</a> <a class="code" href="classdtn_1_1BundleDaemon.html#a18fd65ff3e11b985f3e04a4591d4a33">params_</a>;
<a name="l00234"></a>00234 
<a name="l00238"></a>00238     <span class="keyword">typedef</span> void (*<a class="code" href="classdtn_1_1BundleDaemon.html#1447747a09f1b19845fe93ee4a0bad0c" title="Typedef for a shutdown procedure.">ShutdownProc</a>) (<span class="keywordtype">void</span>* args);
<a name="l00239"></a>00239     
<a name="l00243"></a><a class="code" href="classdtn_1_1BundleDaemon.html#757a2c24ab2d731ac9966bb8a63c4543">00243</a>     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#757a2c24ab2d731ac9966bb8a63c4543" title="Set an application-specific shutdown handler.">set_app_shutdown</a>(<a class="code" href="classdtn_1_1BundleDaemon.html#1447747a09f1b19845fe93ee4a0bad0c" title="Typedef for a shutdown procedure.">ShutdownProc</a> proc, <span class="keywordtype">void</span>* data)
<a name="l00244"></a>00244     {
<a name="l00245"></a>00245         <a class="code" href="classdtn_1_1BundleDaemon.html#ce01f407e72ff90efcd71004b36ed3a9" title="Application-specific shutdown handler.">app_shutdown_proc_</a> = proc;
<a name="l00246"></a>00246         <a class="code" href="classdtn_1_1BundleDaemon.html#c6d3f649a1ac5650fc773106ea51361a" title="Application-specific shutdown data.">app_shutdown_data_</a> = data;
<a name="l00247"></a>00247     }
<a name="l00248"></a>00248 
<a name="l00252"></a><a class="code" href="classdtn_1_1BundleDaemon.html#7091846e9cc1bd4309b5af01d3f335f3">00252</a>     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#7091846e9cc1bd4309b5af01d3f335f3" title="Set a router-specific shutdown handler.">set_rtr_shutdown</a>(<a class="code" href="classdtn_1_1BundleDaemon.html#1447747a09f1b19845fe93ee4a0bad0c" title="Typedef for a shutdown procedure.">ShutdownProc</a> proc, <span class="keywordtype">void</span>* data)
<a name="l00253"></a>00253     {
<a name="l00254"></a>00254         <a class="code" href="classdtn_1_1BundleDaemon.html#2151ed3edaa2c4e54742d9c281d29b07" title="Router-specific shutdown handler.">rtr_shutdown_proc_</a> = proc;
<a name="l00255"></a>00255         <a class="code" href="classdtn_1_1BundleDaemon.html#74bca9e084aa2faab5a9aba4fbb5ed23" title="Router-specific shutdown data.">rtr_shutdown_data_</a> = data;
<a name="l00256"></a>00256     }
<a name="l00257"></a>00257 
<a name="l00261"></a><a class="code" href="classdtn_1_1BundleDaemon.html#a688176818706912fbd49e751d98e565">00261</a>     <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classdtn_1_1BundleDaemon.html#a688176818706912fbd49e751d98e565" title="Accessor for the BundleDaemon&amp;#39;s shutdown status.">shutting_down</a>()
<a name="l00262"></a>00262     {
<a name="l00263"></a>00263         <span class="keywordflow">return</span> <a class="code" href="classdtn_1_1BundleDaemon.html#ec3feb2dfa92fc492da5d5e1b85641df">shutting_down_</a>;
<a name="l00264"></a>00264     }
<a name="l00265"></a>00265 
<a name="l00271"></a>00271     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#eaafd0a0f3dc7c337e923332c9a84844" title="Initialize an idle shutdown handler that will cleanly exit the tcl event loop whenever...">init_idle_shutdown</a>(<span class="keywordtype">int</span> <a class="code" href="dtnping_8c.html#e0c690118932b32ef40a74bb6a259acd">interval</a>);
<a name="l00272"></a>00272     
<a name="l00276"></a>00276     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#7a0890bcd94e1b7390ca9f03aab45e60" title="This is used for delivering bundle to app by Late Binding.">check_and_deliver_to_registrations</a>(<a class="code" href="classdtn_1_1Bundle.html" title="The internal representation of a bundle.">Bundle</a>* bundle, <span class="keyword">const</span> <a class="code" href="classdtn_1_1EndpointID.html">EndpointID</a>&amp;);
<a name="l00277"></a>00277 
<a name="l00278"></a>00278 <span class="keyword">protected</span>:
<a name="l00279"></a><a class="code" href="classdtn_1_1BundleDaemon.html#e81b8ce094725bbc983ec42961d8032e">00279</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdtn_1_1BundleActions.html" title="Intermediary class that provides a utility interface to help routers more easily...">BundleActions</a>;
<a name="l00280"></a>00280 
<a name="l00284"></a>00284     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#7573e0c2e16cf579386f7e51e17c71dd" title="Initialize and load in the registrations.">load_registrations</a>();
<a name="l00285"></a>00285         
<a name="l00289"></a>00289     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#ed3a9ab9c97bfcc502830c508ed83af4" title="Initialize and load in stored bundles.">load_bundles</a>();
<a name="l00290"></a>00290         
<a name="l00294"></a>00294     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#28671879d7f3cf36a03e54cf18b59414" title="Main thread function that dispatches events.">run</a>();
<a name="l00295"></a>00295 
<a name="l00299"></a>00299     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#6590936f52512c792e7c26bf02ddabc8" title="Main event handling function.">handle_event</a>(<a class="code" href="classdtn_1_1BundleEvent.html" title="Event base class.">BundleEvent</a>* event);
<a name="l00300"></a>00300 
<a name="l00302"></a>00302 
<a name="l00305"></a>00305     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#9a75270d0ed9943c5b7afe78a70caed1" title="Event type specific handlers.">handle_bundle_received</a>(<a class="code" href="classdtn_1_1BundleReceivedEvent.html" title="Event class for new bundle arrivals.">BundleReceivedEvent</a>* event);
<a name="l00306"></a>00306     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#6187e4abcac29a42afe340983a15c91c" title="Event type specific handlers.">handle_bundle_transmitted</a>(<a class="code" href="classdtn_1_1BundleTransmittedEvent.html" title="Event class for bundle or fragment transmission.">BundleTransmittedEvent</a>* event);
<a name="l00307"></a>00307     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#9f29ae16ab60d2e9950a15cbffd1d9ab" title="Event type specific handlers.">handle_bundle_delivered</a>(<a class="code" href="classdtn_1_1BundleDeliveredEvent.html" title="Event class for local bundle delivery.">BundleDeliveredEvent</a>* event);
<a name="l00308"></a>00308     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#1b71603aec2f9ce0745b9552a09cf9a2" title="Event type specific handlers.">handle_bundle_expired</a>(<a class="code" href="classdtn_1_1BundleExpiredEvent.html" title="Event class for bundle expiration.">BundleExpiredEvent</a>* event);
<a name="l00309"></a>00309     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#fb08800567318dc1c0c855266a5d2ec0" title="Event type specific handlers.">handle_bundle_free</a>(<a class="code" href="classdtn_1_1BundleFreeEvent.html" title="Event class for bundles that have no more references to them.">BundleFreeEvent</a>* event);
<a name="l00310"></a>00310     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#0505c770df7cfe33110db8df28013b33" title="Event type specific handlers.">handle_bundle_send</a>(<a class="code" href="classdtn_1_1BundleSendRequest.html" title="Event class for sending a bundle.">BundleSendRequest</a>* event);
<a name="l00311"></a>00311     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#bc696ea4c1a2268d757fd40db13359ef" title="Event type specific handlers.">handle_bundle_cancel</a>(<a class="code" href="classdtn_1_1BundleCancelRequest.html" title="Event class for canceling a bundle transmission.">BundleCancelRequest</a>* event);
<a name="l00312"></a>00312     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#c48d60e1f5e4934c9fc6ea3ff224b530" title="Event type specific handlers.">handle_bundle_cancelled</a>(<a class="code" href="classdtn_1_1BundleSendCancelledEvent.html" title="Event class for succesful cancellation of a bundle send.">BundleSendCancelledEvent</a>* event);
<a name="l00313"></a>00313     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#01fb5cb7cca5e781b87f9e2a5174d8c9" title="Event type specific handlers.">handle_bundle_inject</a>(<a class="code" href="classdtn_1_1BundleInjectRequest.html" title="Event class for injecting a bundle.">BundleInjectRequest</a>* event);
<a name="l00314"></a>00314     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#674c2e1a5ac8a448734443f019a77b94" title="Event type specific handlers.">handle_bundle_delete</a>(<a class="code" href="classdtn_1_1BundleDeleteRequest.html" title="Event class for requestion deletion of a bundle.">BundleDeleteRequest</a>* request);
<a name="l00315"></a>00315     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#f7fba3e62c379bb61637fe1b9866dd5f" title="Event type specific handlers.">handle_bundle_accept</a>(<a class="code" href="classdtn_1_1BundleAcceptRequest.html" title="Event class to optionally probe if a bundle can be accepted by the system before...">BundleAcceptRequest</a>* event);
<a name="l00316"></a>00316     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#476ddaae905ba315b8daf3c0704981a5" title="Event type specific handlers.">handle_bundle_query</a>(<a class="code" href="classdtn_1_1BundleQueryRequest.html" title="Event classes for bundle queries and responses.">BundleQueryRequest</a>* event);
<a name="l00317"></a>00317     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#3f934b7e07b3db7708ada33438877204" title="Event type specific handlers.">handle_bundle_report</a>(<a class="code" href="classdtn_1_1BundleReportEvent.html">BundleReportEvent</a>* event);
<a name="l00318"></a>00318     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#de5efdec7bec54eb72f388296c3b2abf" title="Event type specific handlers.">handle_bundle_attributes_query</a>(<a class="code" href="classdtn_1_1BundleAttributesQueryRequest.html">BundleAttributesQueryRequest</a>* request);
<a name="l00319"></a>00319     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#00d62bde4d3fd1e21ddce4b272416d7b" title="Event type specific handlers.">handle_bundle_attributes_report</a>(<a class="code" href="classdtn_1_1BundleAttributesReportEvent.html">BundleAttributesReportEvent</a>* event);
<a name="l00320"></a>00320     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#072d127866507f846d25f5a03ff27933" title="Event type specific handlers.">handle_registration_added</a>(<a class="code" href="classdtn_1_1RegistrationAddedEvent.html" title="Event class for new registration arrivals.">RegistrationAddedEvent</a>* event);
<a name="l00321"></a>00321     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#73e01866efdce9bb5910424f0419e0e7" title="Event type specific handlers.">handle_registration_removed</a>(<a class="code" href="classdtn_1_1RegistrationRemovedEvent.html" title="Event class for registration removals.">RegistrationRemovedEvent</a>* event);
<a name="l00322"></a>00322     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#4a46bf2498dc38611ed5be11c9cfb887" title="Event type specific handlers.">handle_registration_expired</a>(<a class="code" href="classdtn_1_1RegistrationExpiredEvent.html" title="Event class for registration expiration.">RegistrationExpiredEvent</a>* event);
<a name="l00323"></a>00323     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#c72bb7eaf61d1470b729788bfed16a9b" title="Event type specific handlers.">handle_registration_delete</a>(<a class="code" href="classdtn_1_1RegistrationDeleteRequest.html" title="Daemon-only event class used to delete a registration after it&amp;#39;s removed or expired...">RegistrationDeleteRequest</a>* request);
<a name="l00324"></a>00324     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#e20844ca59a005572f332cb7824b9155" title="Event type specific handlers.">handle_contact_up</a>(<a class="code" href="classdtn_1_1ContactUpEvent.html" title="Event class for contact up events.">ContactUpEvent</a>* event);
<a name="l00325"></a>00325     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#51618e52870b57d0fbfebde04a61d9f7" title="Event type specific handlers.">handle_contact_down</a>(<a class="code" href="classdtn_1_1ContactDownEvent.html" title="Event class for contact down events.">ContactDownEvent</a>* event);
<a name="l00326"></a>00326     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#ddda7798f027f63a131a0f50bfda2d87" title="Event type specific handlers.">handle_contact_query</a>(<a class="code" href="classdtn_1_1ContactQueryRequest.html" title="Event classes for contact queries and responses.">ContactQueryRequest</a>* event);
<a name="l00327"></a>00327     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#97c78fa296a2f05ce08d5fae133b494c" title="Event type specific handlers.">handle_contact_report</a>(<a class="code" href="classdtn_1_1ContactReportEvent.html">ContactReportEvent</a>* event);
<a name="l00328"></a>00328     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#966615d7f834f8758890e5d5cd07f8d0" title="Event type specific handlers.">handle_link_created</a>(<a class="code" href="classdtn_1_1LinkCreatedEvent.html" title="Event class for link creation events.">LinkCreatedEvent</a>* event);
<a name="l00329"></a>00329     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#e99e03c521a44c15404150a16cc54ca6" title="Event type specific handlers.">handle_link_deleted</a>(<a class="code" href="classdtn_1_1LinkDeletedEvent.html" title="Event class for link deletion events.">LinkDeletedEvent</a>* event);
<a name="l00330"></a>00330     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#3145457e992ded99bd3516e52a1f3ecf" title="Event type specific handlers.">handle_link_available</a>(<a class="code" href="classdtn_1_1LinkAvailableEvent.html" title="Event class for link available events.">LinkAvailableEvent</a>* event);    
<a name="l00331"></a>00331     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#db6620b992b82b268f6dc5e9fc2c5899" title="Event type specific handlers.">handle_link_unavailable</a>(<a class="code" href="classdtn_1_1LinkUnavailableEvent.html" title="Event class for link unavailable events.">LinkUnavailableEvent</a>* event);
<a name="l00332"></a>00332     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#cc60ec6782a9210d5d3e17ed6bc03db6" title="Event type specific handlers.">handle_link_state_change_request</a>(<a class="code" href="classdtn_1_1LinkStateChangeRequest.html" title="Request class for link state change requests that are sent to the daemon thread for...">LinkStateChangeRequest</a>* request);
<a name="l00333"></a>00333     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#8ac0bfe44ece0d767c851444c64fefc5" title="Event type specific handlers.">handle_link_create</a>(<a class="code" href="classdtn_1_1LinkCreateRequest.html" title="Event class for creating and opening a link.">LinkCreateRequest</a>* event);
<a name="l00334"></a>00334     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#a3abbb2cd35bd4a46b5ee4b0b3f2fe6b" title="Event type specific handlers.">handle_link_delete</a>(<a class="code" href="classdtn_1_1LinkDeleteRequest.html" title="Event class for requesting deletion of a link.">LinkDeleteRequest</a>* request);
<a name="l00335"></a>00335     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#1793c9a5228d582e93355c1ee612b44c" title="Event type specific handlers.">handle_link_reconfigure</a>(<a class="code" href="classdtn_1_1LinkReconfigureRequest.html" title="Event class for reconfiguring an existing link.">LinkReconfigureRequest</a>* request);
<a name="l00336"></a>00336     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#b0d92ae30025468fccc631d295f32ed3" title="Event type specific handlers.">handle_link_query</a>(<a class="code" href="classdtn_1_1LinkQueryRequest.html" title="Event classes for link queries and responses.">LinkQueryRequest</a>* event);
<a name="l00337"></a>00337     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#ee9d1ecd83b366b7681c43d89f53b56d" title="Event type specific handlers.">handle_link_report</a>(<a class="code" href="classdtn_1_1LinkReportEvent.html">LinkReportEvent</a>* event);
<a name="l00338"></a>00338     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#0517aafb2630f3e6223b4b72a0a49816" title="Event type specific handlers.">handle_reassembly_completed</a>(<a class="code" href="classdtn_1_1ReassemblyCompletedEvent.html" title="Event class for reassembly completion.">ReassemblyCompletedEvent</a>* event);
<a name="l00339"></a>00339     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#b37f8080a7e27ed714bb52d1a2c5e9dc" title="Event type specific handlers.">handle_route_add</a>(<a class="code" href="classdtn_1_1RouteAddEvent.html" title="Event class for route add events.">RouteAddEvent</a>* event);
<a name="l00340"></a>00340     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#7225e9d4f12ddf3566e19549ebf60b79" title="Event type specific handlers.">handle_route_del</a>(<a class="code" href="classdtn_1_1RouteDelEvent.html" title="Event class for route delete events.">RouteDelEvent</a>* event);
<a name="l00341"></a>00341     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#98b63f4d84f21a810569e7582698c556" title="Event type specific handlers.">handle_route_query</a>(<a class="code" href="classdtn_1_1RouteQueryRequest.html" title="Event classes for static route queries and responses.">RouteQueryRequest</a>* event);
<a name="l00342"></a>00342     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#15d3d0e8e26cb4241eddc11e5c1378c3" title="Event type specific handlers.">handle_route_report</a>(<a class="code" href="classdtn_1_1RouteReportEvent.html">RouteReportEvent</a>* event);
<a name="l00343"></a>00343     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#2f1cb26e6de5de8ab9118a4a4738390d" title="Event type specific handlers.">handle_custody_signal</a>(<a class="code" href="classdtn_1_1CustodySignalEvent.html" title="Event class for custody transfer signal arrivals.">CustodySignalEvent</a>* event);
<a name="l00344"></a>00344     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#37a3b07c8ee49e69279dd2e6845d24be" title="Event type specific handlers.">handle_custody_timeout</a>(<a class="code" href="classdtn_1_1CustodyTimeoutEvent.html" title="Event class for custody transfer timeout events.">CustodyTimeoutEvent</a>* event);
<a name="l00345"></a>00345     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#daf3a0bc4a5038be22d3c1ded40fa69f" title="Event type specific handlers.">handle_shutdown_request</a>(<a class="code" href="classdtn_1_1ShutdownRequest.html" title="Event class for shutting down a daemon.">ShutdownRequest</a>* event);
<a name="l00346"></a>00346     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#d9b03d083d47e4c311193b966d3f6f9e" title="Event type specific handlers.">handle_status_request</a>(<a class="code" href="classdtn_1_1StatusRequest.html" title="Event class for checking that the daemon is still running.">StatusRequest</a>* event);
<a name="l00347"></a>00347     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#4b56442fe4bad675dabf166f08d6fd2b" title="Event type specific handlers.">handle_cla_set_params</a>(<a class="code" href="classdtn_1_1CLASetParamsRequest.html" title="Event class for DP-originated CLA parameter change requests.">CLASetParamsRequest</a>* request);
<a name="l00348"></a>00348     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#e7914673f00b483468071e5fe203e021" title="Event type specific handlers.">handle_bundle_queued_query</a>(<a class="code" href="classdtn_1_1BundleQueuedQueryRequest.html">BundleQueuedQueryRequest</a>* request);
<a name="l00349"></a>00349     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#1b30b9173206e0a65014481af3f258ce" title="Event type specific handlers.">handle_bundle_queued_report</a>(<a class="code" href="classdtn_1_1BundleQueuedReportEvent.html">BundleQueuedReportEvent</a>* event);
<a name="l00350"></a>00350     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#4327afa70d4e476705ba288c7c174f7a" title="Event type specific handlers.">handle_eid_reachable_query</a>(<a class="code" href="classdtn_1_1EIDReachableQueryRequest.html">EIDReachableQueryRequest</a>* request);
<a name="l00351"></a>00351     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#440ea076fa8a609f0c0161eaefcd3ad9" title="Event type specific handlers.">handle_eid_reachable_report</a>(<a class="code" href="classdtn_1_1EIDReachableReportEvent.html">EIDReachableReportEvent</a>* event);
<a name="l00352"></a>00352     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#199242dd6b951e665ec498472e1bc193" title="Event type specific handlers.">handle_link_attribute_changed</a>(<a class="code" href="classdtn_1_1LinkAttributeChangedEvent.html" title="Event class for a change in link attributes.">LinkAttributeChangedEvent</a>* event);
<a name="l00353"></a>00353     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#97bf54b1dc65be56bbdbe0ffe37eae5b" title="Event type specific handlers.">handle_link_attributes_query</a>(<a class="code" href="classdtn_1_1LinkAttributesQueryRequest.html">LinkAttributesQueryRequest</a>* request);
<a name="l00354"></a>00354     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#7e6f3ec8c6ed9585853dbbdfdc1865d7" title="Event type specific handlers.">handle_link_attributes_report</a>(<a class="code" href="classdtn_1_1LinkAttributesReportEvent.html">LinkAttributesReportEvent</a>* event);
<a name="l00355"></a>00355     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#e1527b74330d767f21d4b8fde8473a74" title="Event type specific handlers.">handle_iface_attributes_query</a>(<a class="code" href="classdtn_1_1IfaceAttributesQueryRequest.html">IfaceAttributesQueryRequest</a>* request);
<a name="l00356"></a>00356     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#614fa1c601f36961959ef3688d38110f" title="Event type specific handlers.">handle_iface_attributes_report</a>(<a class="code" href="classdtn_1_1IfaceAttributesReportEvent.html">IfaceAttributesReportEvent</a>* event);
<a name="l00357"></a>00357     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#6c5915346cf61c1b3dd5917fe4ffd5f3" title="Event type specific handlers.">handle_cla_parameters_query</a>(<a class="code" href="classdtn_1_1CLAParametersQueryRequest.html">CLAParametersQueryRequest</a>* request);
<a name="l00358"></a>00358     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#c55e3d4419402bd62ccef1d3984f5bd9" title="Event type specific handlers.">handle_cla_parameters_report</a>(<a class="code" href="classdtn_1_1CLAParametersReportEvent.html">CLAParametersReportEvent</a>* event);
<a name="l00360"></a>00360 
<a name="l00362"></a>00362     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#3f472d3d6702c3529d8b4c0650fd08c3">event_handlers_completed</a>(<a class="code" href="classdtn_1_1BundleEvent.html" title="Event base class.">BundleEvent</a>* event);
<a name="l00364"></a>00364 
<a name="l00365"></a><a class="code" href="classdtn_1_1BundleDaemon.html#1bd4097b44c7df69cd5365a92d06526c">00365</a>     <span class="keyword">typedef</span> <a class="code" href="classdtn_1_1BundleProtocol.html#e339b3a1104cd188459059e46543490b" title="Custody Signal Reason Codes.">BundleProtocol::custody_signal_reason_t</a> <a class="code" href="classdtn_1_1BundleProtocol.html#e339b3a1104cd188459059e46543490b" title="Custody Signal Reason Codes.">custody_signal_reason_t</a>;
<a name="l00366"></a><a class="code" href="classdtn_1_1BundleDaemon.html#4c002c105479be6230dfce81bfc931cb">00366</a>     <span class="keyword">typedef</span> <a class="code" href="classdtn_1_1BundleProtocol.html#4e25b9c1d9577e30425bc93a8bc5ddb4" title="Bundle Status Report Status Flags.">BundleProtocol::status_report_flag_t</a> <a class="code" href="classdtn_1_1BundleProtocol.html#4e25b9c1d9577e30425bc93a8bc5ddb4" title="Bundle Status Report Status Flags.">status_report_flag_t</a>;
<a name="l00367"></a><a class="code" href="classdtn_1_1BundleDaemon.html#16b5746880b090f203efcfb8786cac1d">00367</a>     <span class="keyword">typedef</span> <a class="code" href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f917" title="Bundle Status Report &amp;quot;Reason Code&amp;quot; flags.">BundleProtocol::status_report_reason_t</a> <a class="code" href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f917" title="Bundle Status Report &amp;quot;Reason Code&amp;quot; flags.">status_report_reason_t</a>;
<a name="l00368"></a>00368     
<a name="l00372"></a>00372     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#3847596a3b6b6a7e583947501491a87b" title="Locally generate a status report for the given bundle.">generate_status_report</a>(<a class="code" href="classdtn_1_1Bundle.html" title="The internal representation of a bundle.">Bundle</a>* bundle,
<a name="l00373"></a>00373                                 <a class="code" href="classdtn_1_1BundleStatusReport.html#b2546897ef428634d8385363b6de1499">BundleStatusReport::flag_t</a> flag,
<a name="l00374"></a>00374                                 <a class="code" href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f917" title="Bundle Status Report &amp;quot;Reason Code&amp;quot; flags.">status_report_reason_t</a> reason =
<a name="l00375"></a>00375                                 <a class="code" href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f917eac137290a0338e66ed4a0c1cc09c2f2">BundleProtocol::REASON_NO_ADDTL_INFO</a>);
<a name="l00376"></a>00376 
<a name="l00380"></a>00380     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#0667dcac140e535a892d962bc9b95da0" title="Generate a custody signal to be sent to the current custodian.">generate_custody_signal</a>(<a class="code" href="classdtn_1_1Bundle.html" title="The internal representation of a bundle.">Bundle</a>* bundle, <span class="keywordtype">bool</span> succeeded,
<a name="l00381"></a>00381                                  <a class="code" href="classdtn_1_1BundleProtocol.html#e339b3a1104cd188459059e46543490b" title="Custody Signal Reason Codes.">custody_signal_reason_t</a> reason);
<a name="l00382"></a>00382     
<a name="l00386"></a>00386     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#4e2042db32460031c50cae094a7275fe" title="Cancel any pending custody timers for the bundle.">cancel_custody_timers</a>(<a class="code" href="classdtn_1_1Bundle.html" title="The internal representation of a bundle.">Bundle</a>* bundle);
<a name="l00387"></a>00387 
<a name="l00392"></a>00392     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#cd91a9612a25c23580b75a951a382267" title="Take custody for the given bundle, sending the appropriate signal to the current...">accept_custody</a>(<a class="code" href="classdtn_1_1Bundle.html" title="The internal representation of a bundle.">Bundle</a>* bundle);
<a name="l00393"></a>00393 
<a name="l00398"></a>00398     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#94f9a6f6615e0249f679b4dccee7e1a3" title="Release custody of the given bundle, sending the appropriate signal to the current...">release_custody</a>(<a class="code" href="classdtn_1_1Bundle.html" title="The internal representation of a bundle.">Bundle</a>* bundle);
<a name="l00399"></a>00399 
<a name="l00407"></a>00407     <span class="keywordtype">bool</span> <a class="code" href="classdtn_1_1BundleDaemon.html#d488c6c663e4692388b21bf16416a2d2" title="Add the bundle to the pending list and (optionally) the persistent store, and set...">add_to_pending</a>(<a class="code" href="classdtn_1_1Bundle.html" title="The internal representation of a bundle.">Bundle</a>* bundle, <span class="keywordtype">bool</span> add_to_store);
<a name="l00408"></a>00408     
<a name="l00413"></a>00413     <span class="keywordtype">bool</span> <a class="code" href="classdtn_1_1BundleDaemon.html#8c35932db2a660b4205aa3c4795b8308" title="Remove the bundle from the pending list and data store, and cancel the expiration...">delete_from_pending</a>(<span class="keyword">const</span> <a class="code" href="namespacedtn.html#87094f3b26b9f1d469e616d311ae57b1" title="Class definition for a Bundle reference.">BundleRef</a>&amp; bundle);
<a name="l00414"></a>00414     
<a name="l00420"></a>00420     <span class="keywordtype">bool</span> <a class="code" href="classdtn_1_1BundleDaemon.html#6bf50404ffdda5e66a110f1a64f63958" title="Check if we should delete this bundle, called just after arrival, once it&amp;#39;s been...">try_to_delete</a>(<span class="keyword">const</span> <a class="code" href="namespacedtn.html#87094f3b26b9f1d469e616d311ae57b1" title="Class definition for a Bundle reference.">BundleRef</a>&amp; bundle);
<a name="l00421"></a>00421 
<a name="l00428"></a>00428     <span class="keywordtype">bool</span> <a class="code" href="classdtn_1_1BundleDaemon.html#cf4244174dd62d8a39d80bc77915d23c" title="Delete (rather than silently discard) a bundle, e.g., an expired bundle.">delete_bundle</a>(<span class="keyword">const</span> <a class="code" href="namespacedtn.html#87094f3b26b9f1d469e616d311ae57b1" title="Class definition for a Bundle reference.">BundleRef</a>&amp; bundle,
<a name="l00429"></a>00429                        <a class="code" href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f917" title="Bundle Status Report &amp;quot;Reason Code&amp;quot; flags.">status_report_reason_t</a> reason =
<a name="l00430"></a>00430                            <a class="code" href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f917eac137290a0338e66ed4a0c1cc09c2f2">BundleProtocol::REASON_NO_ADDTL_INFO</a>);
<a name="l00431"></a>00431     
<a name="l00437"></a>00437     <a class="code" href="classdtn_1_1Bundle.html" title="The internal representation of a bundle.">Bundle</a>* <a class="code" href="classdtn_1_1BundleDaemon.html#feb7761e0df0015e0af4dca266d7bd47" title="Check if there are any bundles in the pending queue that match the source id, timestamp...">find_duplicate</a>(<a class="code" href="classdtn_1_1Bundle.html" title="The internal representation of a bundle.">Bundle</a>* bundle);
<a name="l00438"></a>00438 
<a name="l00442"></a>00442     <span class="keywordtype">void</span> <a class="code" href="classdtn_1_1BundleDaemon.html#d604277d857c5ea54de0718f20b677fd" title="Deliver the bundle to the given registration.">deliver_to_registration</a>(<a class="code" href="classdtn_1_1Bundle.html" title="The internal representation of a bundle.">Bundle</a>* bundle, <a class="code" href="classdtn_1_1Registration.html" title="Class used to represent an &amp;quot;application&amp;quot; registration, loosely defined...">Registration</a>* registration);
<a name="l00443"></a>00443     
<a name="l00451"></a>00451     <span class="keywordtype">bool</span> <a class="code" href="classdtn_1_1BundleDaemon.html#f3a66691215ba378336f8241b111d364" title="Check the registration table and optionally deliver the bundle to any that match...">check_local_delivery</a>(<a class="code" href="classdtn_1_1Bundle.html" title="The internal representation of a bundle.">Bundle</a>* bundle, <span class="keywordtype">bool</span> deliver);
<a name="l00452"></a>00452     
<a name="l00454"></a><a class="code" href="classdtn_1_1BundleDaemon.html#a5c8a244aad225987f9359ee1c2a1101">00454</a>     <a class="code" href="classdtn_1_1BundleRouter.html" title="The BundleRouter is the main decision maker for all routing decisions related to...">BundleRouter</a>* <a class="code" href="classdtn_1_1BundleDaemon.html#a5c8a244aad225987f9359ee1c2a1101" title="The active bundle router.">router_</a>;
<a name="l00455"></a>00455 
<a name="l00457"></a><a class="code" href="classdtn_1_1BundleDaemon.html#83688d1a99907ab38c64cd4ddb443358">00457</a>     <a class="code" href="classdtn_1_1BundleActions.html" title="Intermediary class that provides a utility interface to help routers more easily...">BundleActions</a>* <a class="code" href="classdtn_1_1BundleDaemon.html#83688d1a99907ab38c64cd4ddb443358" title="The active bundle actions handler.">actions_</a>;
<a name="l00458"></a>00458 
<a name="l00460"></a><a class="code" href="classdtn_1_1BundleDaemon.html#1f45d824bd4047fe46d280c4b17d9d77">00460</a>     <a class="code" href="classdtn_1_1AdminRegistration.html" title="Internal registration that recieves all administrative bundles destined for the router...">AdminRegistration</a>* <a class="code" href="classdtn_1_1BundleDaemon.html#1f45d824bd4047fe46d280c4b17d9d77" title="The administrative registration.">admin_reg_</a>;
<a name="l00461"></a>00461 
<a name="l00463"></a><a class="code" href="classdtn_1_1BundleDaemon.html#61f93eca77176bb879f85a92ff04eeb1">00463</a>     <a class="code" href="classdtn_1_1PingRegistration.html" title="Internal registration for the dtnping application.">PingRegistration</a>* <a class="code" href="classdtn_1_1BundleDaemon.html#61f93eca77176bb879f85a92ff04eeb1" title="The ping registration.">ping_reg_</a>;
<a name="l00464"></a>00464 
<a name="l00466"></a><a class="code" href="classdtn_1_1BundleDaemon.html#032fa1c5998c5e037ed54d4734f6807f">00466</a>     <a class="code" href="classdtn_1_1ContactManager.html" title="A contact manager class.">ContactManager</a>* <a class="code" href="classdtn_1_1BundleDaemon.html#032fa1c5998c5e037ed54d4734f6807f" title="The contact manager.">contactmgr_</a>;
<a name="l00467"></a>00467 
<a name="l00469"></a><a class="code" href="classdtn_1_1BundleDaemon.html#a0a2294a38635f5f76aba4375b0c2f7d">00469</a>     <a class="code" href="classdtn_1_1FragmentManager.html" title="The Fragment Manager maintains state for all of the fragmentary bundles, reconstructing...">FragmentManager</a>* <a class="code" href="classdtn_1_1BundleDaemon.html#a0a2294a38635f5f76aba4375b0c2f7d" title="The fragmentation / reassembly manager.">fragmentmgr_</a>;
<a name="l00470"></a>00470 
<a name="l00472"></a><a class="code" href="classdtn_1_1BundleDaemon.html#f0b116c3ae390f0032049f376e3a2eec">00472</a>     <a class="code" href="classdtn_1_1RegistrationTable.html" title="Class for the in-memory registration table.">RegistrationTable</a>* <a class="code" href="classdtn_1_1BundleDaemon.html#f0b116c3ae390f0032049f376e3a2eec" title="The table of active registrations.">reg_table_</a>;
<a name="l00473"></a>00473 
<a name="l00475"></a><a class="code" href="classdtn_1_1BundleDaemon.html#48dbdf23301f10dc3f1121913a023195">00475</a>     <a class="code" href="classdtn_1_1BundleList.html" title="List structure for handling bundles.">BundleList</a>* <a class="code" href="classdtn_1_1BundleDaemon.html#48dbdf23301f10dc3f1121913a023195" title="The list of all bundles still pending delivery.">pending_bundles_</a>;
<a name="l00476"></a>00476 
<a name="l00478"></a><a class="code" href="classdtn_1_1BundleDaemon.html#ce140ab25aea62199a71e73e216845a5">00478</a>     <a class="code" href="classdtn_1_1BundleList.html" title="List structure for handling bundles.">BundleList</a>* <a class="code" href="classdtn_1_1BundleDaemon.html#ce140ab25aea62199a71e73e216845a5" title="The list of all bundles that we have custody of.">custody_bundles_</a>;
<a name="l00479"></a>00479     
<a name="l00481"></a><a class="code" href="classdtn_1_1BundleDaemon.html#4c63dbe82dd1b3692d9748a32c859373">00481</a>     oasys::MsgQueue&lt;BundleEvent*&gt;* <a class="code" href="classdtn_1_1BundleDaemon.html#4c63dbe82dd1b3692d9748a32c859373" title="The event queue.">eventq_</a>;
<a name="l00482"></a>00482 
<a name="l00485"></a><a class="code" href="classdtn_1_1BundleDaemon.html#bb461f7084ac3cf8c88ecff1a2686bcf">00485</a>     <a class="code" href="classdtn_1_1EndpointID.html">EndpointID</a> <a class="code" href="classdtn_1_1BundleDaemon.html#bb461f7084ac3cf8c88ecff1a2686bcf" title="The default endpoint id for reaching this daemon, used for bundle status reports...">local_eid_</a>;
<a name="l00486"></a>00486 
<a name="l00488"></a><a class="code" href="structdtn_1_1BundleDaemon_1_1Stats.html">00488</a>     <span class="keyword">struct </span><a class="code" href="structdtn_1_1BundleDaemon_1_1Stats.html" title="Statistics structure definition.">Stats</a> {
<a name="l00489"></a><a class="code" href="structdtn_1_1BundleDaemon_1_1Stats.html#4ae6dc328fdd5def0bc7a321b6fe9026">00489</a>         u_int32_t <a class="code" href="structdtn_1_1BundleDaemon_1_1Stats.html#4ae6dc328fdd5def0bc7a321b6fe9026">received_bundles_</a>;
<a name="l00490"></a><a class="code" href="structdtn_1_1BundleDaemon_1_1Stats.html#296369d7b5496abf65cb2f4b080f17d1">00490</a>         u_int32_t <a class="code" href="structdtn_1_1BundleDaemon_1_1Stats.html#296369d7b5496abf65cb2f4b080f17d1">delivered_bundles_</a>;
<a name="l00491"></a><a class="code" href="structdtn_1_1BundleDaemon_1_1Stats.html#34933ce2a013c6208e836b6b636823ca">00491</a>         u_int32_t <a class="code" href="structdtn_1_1BundleDaemon_1_1Stats.html#34933ce2a013c6208e836b6b636823ca">generated_bundles_</a>;
<a name="l00492"></a><a class="code" href="structdtn_1_1BundleDaemon_1_1Stats.html#989e3916cbfdbb3174962bb4ba6b041c">00492</a>         u_int32_t <a class="code" href="structdtn_1_1BundleDaemon_1_1Stats.html#989e3916cbfdbb3174962bb4ba6b041c">transmitted_bundles_</a>;
<a name="l00493"></a><a class="code" href="structdtn_1_1BundleDaemon_1_1Stats.html#c85c7be254f9241a2fb610fb9e6cf4e9">00493</a>         u_int32_t <a class="code" href="structdtn_1_1BundleDaemon_1_1Stats.html#c85c7be254f9241a2fb610fb9e6cf4e9">expired_bundles_</a>;
<a name="l00494"></a><a class="code" href="structdtn_1_1BundleDaemon_1_1Stats.html#8eb7288e8cc5f5feaaedd5998c6cb958">00494</a>         u_int32_t <a class="code" href="structdtn_1_1BundleDaemon_1_1Stats.html#8eb7288e8cc5f5feaaedd5998c6cb958">deleted_bundles_</a>;
<a name="l00495"></a><a class="code" href="structdtn_1_1BundleDaemon_1_1Stats.html#0d5fa3f893a635a22b65ea5e9a1faea2">00495</a>         u_int32_t <a class="code" href="structdtn_1_1BundleDaemon_1_1Stats.html#0d5fa3f893a635a22b65ea5e9a1faea2">duplicate_bundles_</a>;
<a name="l00496"></a><a class="code" href="structdtn_1_1BundleDaemon_1_1Stats.html#1ef78250580e8aa28e368d1b00e29148">00496</a>         u_int32_t <a class="code" href="structdtn_1_1BundleDaemon_1_1Stats.html#1ef78250580e8aa28e368d1b00e29148">injected_bundles_</a>;
<a name="l00497"></a><a class="code" href="structdtn_1_1BundleDaemon_1_1Stats.html#29e4ac69c2393b563da1f0557458deea">00497</a>         u_int32_t <a class="code" href="structdtn_1_1BundleDaemon_1_1Stats.html#29e4ac69c2393b563da1f0557458deea">events_processed_</a>;
<a name="l00498"></a>00498     };
<a name="l00499"></a>00499 
<a name="l00501"></a><a class="code" href="classdtn_1_1BundleDaemon.html#ae65fea1f23a7f4d1bd7315014f8627c">00501</a>     <a class="code" href="structdtn_1_1BundleDaemon_1_1Stats.html" title="Statistics structure definition.">Stats</a> <a class="code" href="classdtn_1_1BundleDaemon.html#ae65fea1f23a7f4d1bd7315014f8627c" title="Stats instance.">stats_</a>;
<a name="l00502"></a>00502 
<a name="l00504"></a><a class="code" href="classdtn_1_1BundleDaemon.html#ce01f407e72ff90efcd71004b36ed3a9">00504</a>     <a class="code" href="classdtn_1_1BundleDaemon.html#1447747a09f1b19845fe93ee4a0bad0c" title="Typedef for a shutdown procedure.">ShutdownProc</a> <a class="code" href="classdtn_1_1BundleDaemon.html#ce01f407e72ff90efcd71004b36ed3a9" title="Application-specific shutdown handler.">app_shutdown_proc_</a>;
<a name="l00505"></a>00505  
<a name="l00507"></a><a class="code" href="classdtn_1_1BundleDaemon.html#c6d3f649a1ac5650fc773106ea51361a">00507</a>     <span class="keywordtype">void</span>* <a class="code" href="classdtn_1_1BundleDaemon.html#c6d3f649a1ac5650fc773106ea51361a" title="Application-specific shutdown data.">app_shutdown_data_</a>;
<a name="l00508"></a>00508 
<a name="l00510"></a><a class="code" href="classdtn_1_1BundleDaemon.html#2151ed3edaa2c4e54742d9c281d29b07">00510</a>     <a class="code" href="classdtn_1_1BundleDaemon.html#1447747a09f1b19845fe93ee4a0bad0c" title="Typedef for a shutdown procedure.">ShutdownProc</a> <a class="code" href="classdtn_1_1BundleDaemon.html#2151ed3edaa2c4e54742d9c281d29b07" title="Router-specific shutdown handler.">rtr_shutdown_proc_</a>;
<a name="l00511"></a>00511 
<a name="l00513"></a><a class="code" href="classdtn_1_1BundleDaemon.html#74bca9e084aa2faab5a9aba4fbb5ed23">00513</a>     <span class="keywordtype">void</span>* <a class="code" href="classdtn_1_1BundleDaemon.html#74bca9e084aa2faab5a9aba4fbb5ed23" title="Router-specific shutdown data.">rtr_shutdown_data_</a>;
<a name="l00514"></a>00514 
<a name="l00515"></a>00515     <span class="comment">// indicator that a BundleDaemon shutdown is in progress</span>
<a name="l00516"></a><a class="code" href="classdtn_1_1BundleDaemon.html#ec3feb2dfa92fc492da5d5e1b85641df">00516</a>     <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classdtn_1_1BundleDaemon.html#ec3feb2dfa92fc492da5d5e1b85641df">shutting_down_</a>;
<a name="l00517"></a>00517 
<a name="l00519"></a><a class="code" href="structdtn_1_1BundleDaemon_1_1DaemonIdleExit.html">00519</a>     <span class="keyword">struct </span><a class="code" href="structdtn_1_1BundleDaemon_1_1DaemonIdleExit.html" title="Class used for the idle timer.">DaemonIdleExit</a> : <span class="keyword">public</span> oasys::IdleTclExit {
<a name="l00520"></a><a class="code" href="structdtn_1_1BundleDaemon_1_1DaemonIdleExit.html#ab32c520500ac9931b18d62368c5f062">00520</a>         <a class="code" href="structdtn_1_1BundleDaemon_1_1DaemonIdleExit.html#ab32c520500ac9931b18d62368c5f062">DaemonIdleExit</a>(<span class="keywordtype">int</span> <a class="code" href="dtnping_8c.html#e0c690118932b32ef40a74bb6a259acd">interval</a>) : IdleTclExit(interval) {}
<a name="l00521"></a>00521         <span class="keywordtype">bool</span> <a class="code" href="structdtn_1_1BundleDaemon_1_1DaemonIdleExit.html#0d1700a28c5dda2e109228050542d652">is_idle</a>(<span class="keyword">const</span> <span class="keyword">struct</span> timeval&amp; now);
<a name="l00522"></a>00522     };
<a name="l00523"></a><a class="code" href="classdtn_1_1BundleDaemon.html#cc90cfa85026d0af9fbdbeb28388edba">00523</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="structdtn_1_1BundleDaemon_1_1DaemonIdleExit.html" title="Class used for the idle timer.">DaemonIdleExit</a>;
<a name="l00524"></a>00524     
<a name="l00526"></a><a class="code" href="classdtn_1_1BundleDaemon.html#63d018c1a65e0941407258434eba13bc">00526</a>     <a class="code" href="structdtn_1_1BundleDaemon_1_1DaemonIdleExit.html" title="Class used for the idle timer.">DaemonIdleExit</a>* <a class="code" href="classdtn_1_1BundleDaemon.html#63d018c1a65e0941407258434eba13bc" title="Pointer to the idle exit handler (if any).">idle_exit_</a>;
<a name="l00527"></a>00527 
<a name="l00529"></a><a class="code" href="classdtn_1_1BundleDaemon.html#3e7aeb62b7e60ae2f6a81ad6844168e7">00529</a>     oasys::Time <a class="code" href="classdtn_1_1BundleDaemon.html#3e7aeb62b7e60ae2f6a81ad6844168e7" title="Time value when the last event was handled.">last_event_</a>;
<a name="l00530"></a>00530 };
<a name="l00531"></a>00531 
<a name="l00532"></a>00532 } <span class="comment">// namespace dtn</span>
<a name="l00533"></a>00533 
<a name="l00534"></a>00534 <span class="preprocessor">#endif </span><span class="comment">/* _BUNDLE_DAEMON_H_ */</span>
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 30 09:26:52 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>