Sophie

Sophie

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

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: dtn::ContactManager Class Reference</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 class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="namespacedtn.html">dtn</a>::<a class="el" href="classdtn_1_1ContactManager.html">ContactManager</a>
  </div>
</div>
<div class="contents">
<h1>dtn::ContactManager Class Reference</h1><!-- doxytag: class="dtn::ContactManager" --><!-- doxytag: inherits="dtn::BundleEventHandler" -->A contact manager class.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="ContactManager_8h-source.html">ContactManager.h</a>&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for dtn::ContactManager:</div>
<div class="dynsection">

<p><center><img src="classdtn_1_1ContactManager.png" usemap="#dtn::ContactManager_map" border="0" alt=""></center>
<map name="dtn::ContactManager_map">
<area href="classdtn_1_1BundleEventHandler.html" alt="dtn::BundleEventHandler" shape="rect" coords="0,0,151,24">
</map>
</div>

<p>
<a href="classdtn_1_1ContactManager-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager_1_1LinkAvailabilityTimer.html">LinkAvailabilityTimer</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Timer class used to re-enable broken ondemand links.  <a href="classdtn_1_1ContactManager_1_1LinkAvailabilityTimer.html#_details">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#be5c068e60615f79e957e9561278e7d3">ContactManager</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor / Destructor.  <a href="#be5c068e60615f79e957e9561278e7d3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#82c562281c2188a81b9aa04c42704c8d">~ContactManager</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#4c93f54d72238524d5215abbac4138b9">dump</a> (oasys::StringBuffer *<a class="el" href="num2sdnv_8c.html#a81cdcc7ff6987bc85c073253e32715f">buf</a>) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Dump a string representation of the info inside contact manager.  <a href="#4c93f54d72238524d5215abbac4138b9"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#c0964b1fa4e2c5fc4c841d7261cf5929">add_new_link</a> (const <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> &amp;link)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a link if the contact manager does not already have a link by the same name.  <a href="#c0964b1fa4e2c5fc4c841d7261cf5929"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#54d224d2c2a8436d06f44d8880975cd5">del_link</a> (const <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> &amp;link, <a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> wait=false, <a class="el" href="classdtn_1_1ContactEvent.html#e20f7357509a2bcca3d8e6c8daf552f7">ContactEvent::reason_t</a> reason=ContactEvent::NO_INFO)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete a link.  <a href="#54d224d2c2a8436d06f44d8880975cd5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#b7beecc3d70f0917ac6c94b05c134320">has_link</a> (const <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> &amp;link)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if contact manager already has this link.  <a href="#b7beecc3d70f0917ac6c94b05c134320"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#3a3b3c9dfa58d1e88b80c5ad19fd1291">has_link</a> (const char *name)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if contact manager already has a link by the same name.  <a href="#3a3b3c9dfa58d1e88b80c5ad19fd1291"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#4a31131016ed7f6b11ce6823dd7abe91">find_link</a> (const char *name)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Finds link corresponding to this name.  <a href="#4a31131016ed7f6b11ce6823dd7abe91"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#d6123f2dcfbba11d95100eb3cfb714bf">find_link_to</a> (<a class="el" href="classdtn_1_1ConvergenceLayer.html">ConvergenceLayer</a> *cl, const std::string &amp;nexthop, const <a class="el" href="classdtn_1_1EndpointID.html">EndpointID</a> &amp;remote_eid=EndpointID::NULL_EID(), <a class="el" href="classdtn_1_1Link.html#a93653796d33692c67c415afd1edf61e">Link::link_type_t</a> type=Link::LINK_INVALID, u_int states=0xffffffff)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Helper routine to find a link based on criteria:.  <a href="#d6123f2dcfbba11d95100eb3cfb714bf"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classdtn_1_1LinkSet.html">LinkSet</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#957c6cfac0575444e0a9a04a12708cf6">links</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the list of links.  <a href="#957c6cfac0575444e0a9a04a12708cf6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">oasys::Lock *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#6edebce9cf6080f854039f8df593cfec">lock</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Accessor for the <a class="el" href="classdtn_1_1ContactManager.html" title="A contact manager class.">ContactManager</a> internal lock.  <a href="#6edebce9cf6080f854039f8df593cfec"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#5b2577e0713d1d7882e2355d5077d86c">handle_event</a> (<a class="el" href="classdtn_1_1BundleEvent.html">BundleEvent</a> *event)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generic event handler.  <a href="#5b2577e0713d1d7882e2355d5077d86c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#115f287ba3bdd3eff46ea65ca64572cc">handle_link_created</a> (<a class="el" href="classdtn_1_1LinkCreatedEvent.html">LinkCreatedEvent</a> *event)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event handler when a link has been created.  <a href="#115f287ba3bdd3eff46ea65ca64572cc"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#3f3ba023d235c5dc10c0a98ff8c92c37">handle_link_available</a> (<a class="el" href="classdtn_1_1LinkAvailableEvent.html">LinkAvailableEvent</a> *event)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event handler when a link becomes unavailable.  <a href="#3f3ba023d235c5dc10c0a98ff8c92c37"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#07720dcbbcd98f6e882f240dc4466b59">handle_link_unavailable</a> (<a class="el" href="classdtn_1_1LinkUnavailableEvent.html">LinkUnavailableEvent</a> *event)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event handler when a link becomes unavailable.  <a href="#07720dcbbcd98f6e882f240dc4466b59"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#d5bec308777a9655952aa729e9702a21">handle_contact_up</a> (<a class="el" href="classdtn_1_1ContactUpEvent.html">ContactUpEvent</a> *event)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event handler when a link is opened successfully.  <a href="#d5bec308777a9655952aa729e9702a21"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#a0e0738c54cc947fb03f765f3afcb03c">new_opportunistic_link</a> (<a class="el" href="classdtn_1_1ConvergenceLayer.html">ConvergenceLayer</a> *cl, const std::string &amp;nexthop, const <a class="el" href="classdtn_1_1EndpointID.html">EndpointID</a> &amp;remote_eid, const std::string *link_name=NULL)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Notification from a convergence layer that a new opportunistic link has come knocking.  <a href="#a0e0738c54cc947fb03f765f3afcb03c"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Protected Types</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::map&lt; <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a>, <br class="typebreak">
<a class="el" href="classdtn_1_1ContactManager_1_1LinkAvailabilityTimer.html">LinkAvailabilityTimer</a> * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#922dd0af3e3765e3bed149e87ae15c2d">AvailabilityTimerMap</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Table storing link -&gt; availability timer class.  <a href="#922dd0af3e3765e3bed149e87ae15c2d"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#3041f1992bb72292e528a551a07cfcee">reopen_link</a> (const <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> &amp;link)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reopen a broken link.  <a href="#3041f1992bb72292e528a551a07cfcee"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classdtn_1_1LinkSet.html">LinkSet</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#ade8809a7e4850c4a55fe497c14a8ca2">links_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set of all links.  <a href="#ade8809a7e4850c4a55fe497c14a8ca2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#b6a08ccc691316966419782cd58cd0ce">opportunistic_cnt_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Counter for opportunistic links.  <a href="#b6a08ccc691316966419782cd58cd0ce"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classdtn_1_1ContactManager.html#922dd0af3e3765e3bed149e87ae15c2d">AvailabilityTimerMap</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#1176e45365aed6d561b8f39cacb72e57">availability_timers_</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">oasys::SpinLock&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#2748e832f0ce4a43762af436e744dfdc">lock_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lock to protect internal data structures.  <a href="#2748e832f0ce4a43762af436e744dfdc"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1ContactManager.html#98ebc5cec64f79d77a11fef41e91c143">LinkAvailabilityTimer</a></td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
A contact manager class. 
<p>
Maintains topological information and connectivity state regarding available links and contacts. 
<p>Definition at line <a class="el" href="ContactManager_8h-source.html#l00039">39</a> of file <a class="el" href="ContactManager_8h-source.html">ContactManager.h</a>.</p>
<hr><h2>Member Typedef Documentation</h2>
<a class="anchor" name="922dd0af3e3765e3bed149e87ae15c2d"></a><!-- doxytag: member="dtn::ContactManager::AvailabilityTimerMap" ref="922dd0af3e3765e3bed149e87ae15c2d" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef std::map&lt;<a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a>, <a class="el" href="classdtn_1_1ContactManager_1_1LinkAvailabilityTimer.html">LinkAvailabilityTimer</a>*&gt; <a class="el" href="classdtn_1_1ContactManager.html#922dd0af3e3765e3bed149e87ae15c2d">dtn::ContactManager::AvailabilityTimerMap</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Table storing link -&gt; availability timer class. 
<p>

<p>Definition at line <a class="el" href="ContactManager_8h-source.html#l00190">190</a> of file <a class="el" href="ContactManager_8h-source.html">ContactManager.h</a>.</p>

</div>
</div><p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="be5c068e60615f79e957e9561278e7d3"></a><!-- doxytag: member="dtn::ContactManager::ContactManager" ref="be5c068e60615f79e957e9561278e7d3" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">dtn::ContactManager::ContactManager           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Constructor / Destructor. 
<p>

<p>Definition at line <a class="el" href="ContactManager_8cc-source.html#l00033">33</a> of file <a class="el" href="ContactManager_8cc-source.html">ContactManager.cc</a>.</p>

<p>References <a class="el" href="ContactManager_8h-source.html#l00164">links_</a>.</p>

</div>
</div><p>
<a class="anchor" name="82c562281c2188a81b9aa04c42704c8d"></a><!-- doxytag: member="dtn::ContactManager::~ContactManager" ref="82c562281c2188a81b9aa04c42704c8d" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">dtn::ContactManager::~ContactManager           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="ContactManager_8cc-source.html#l00041">41</a> of file <a class="el" href="ContactManager_8cc-source.html">ContactManager.cc</a>.</p>

<p>References <a class="el" href="ContactManager_8h-source.html#l00164">links_</a>.</p>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="c0964b1fa4e2c5fc4c841d7261cf5929"></a><!-- doxytag: member="dtn::ContactManager::add_new_link" ref="c0964b1fa4e2c5fc4c841d7261cf5929" args="(const LinkRef &amp;link)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> dtn::ContactManager::add_new_link           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>link</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add a link if the contact manager does not already have a link by the same name. 
<p>

<p>Definition at line <a class="el" href="ContactManager_8cc-source.html#l00048">48</a> of file <a class="el" href="ContactManager_8cc-source.html">ContactManager.cc</a>.</p>

<p>References <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="ContactManager_8cc-source.html#l00129">has_link()</a>, <a class="el" href="ContactManager_8h-source.html#l00164">links_</a>, <a class="el" href="ContactManager_8h-source.html#l00196">lock_</a>, and <a class="el" href="BundleDaemon_8cc-source.html#l00134">dtn::BundleDaemon::post()</a>.</p>

<p>Referenced by <a class="el" href="TcaRouter_8cc-source.html#l00837">dtn::TcaRouter::create_link()</a>, <a class="el" href="BundleDaemon_8cc-source.html#l01546">dtn::BundleDaemon::handle_link_create()</a>, and <a class="el" href="ContactManager_8cc-source.html#l00440">new_opportunistic_link()</a>.</p>

</div>
</div><p>
<a class="anchor" name="54d224d2c2a8436d06f44d8880975cd5"></a><!-- doxytag: member="dtn::ContactManager::del_link" ref="54d224d2c2a8436d06f44d8880975cd5" args="(const LinkRef &amp;link, bool wait=false, ContactEvent::reason_t reason=ContactEvent::NO_INFO)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::ContactManager::del_link           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>link</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td>
          <td class="paramname"> <em>wait</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classdtn_1_1ContactEvent.html#e20f7357509a2bcca3d8e6c8daf552f7">ContactEvent::reason_t</a>&nbsp;</td>
          <td class="paramname"> <em>reason</em> = <code>ContactEvent::NO_INFO</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Delete a link. 
<p>

<p>Definition at line <a class="el" href="ContactManager_8cc-source.html#l00071">71</a> of file <a class="el" href="ContactManager_8cc-source.html">ContactManager.cc</a>.</p>

<p>References <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="ContactManager_8h-source.html#l00191">availability_timers_</a>, <a class="el" href="contacts_2Link_8h-source.html#l00205">dtn::Link::CLOSED</a>, <a class="el" href="ContactManager_8cc-source.html#l00129">has_link()</a>, <a class="el" href="ContactManager_8h-source.html#l00164">links_</a>, <a class="el" href="ContactManager_8h-source.html#l00111">lock()</a>, <a class="el" href="ContactManager_8h-source.html#l00196">lock_</a>, <a class="el" href="BundleDaemon_8cc-source.html#l00134">dtn::BundleDaemon::post()</a>, and <a class="el" href="BundleDaemon_8cc-source.html#l00148">dtn::BundleDaemon::post_and_wait()</a>.</p>

<p>Referenced by <a class="el" href="BundleDaemon_8cc-source.html#l01605">dtn::BundleDaemon::handle_link_delete()</a>.</p>

</div>
</div><p>
<a class="anchor" name="4c93f54d72238524d5215abbac4138b9"></a><!-- doxytag: member="dtn::ContactManager::dump" ref="4c93f54d72238524d5215abbac4138b9" args="(oasys::StringBuffer *buf) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::ContactManager::dump           </td>
          <td>(</td>
          <td class="paramtype">oasys::StringBuffer *&nbsp;</td>
          <td class="paramname"> <em>buf</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Dump a string representation of the info inside contact manager. 
<p>

<p>Definition at line <a class="el" href="ContactManager_8cc-source.html#l00497">497</a> of file <a class="el" href="ContactManager_8cc-source.html">ContactManager.cc</a>.</p>

<p>References <a class="el" href="ContactManager_8h-source.html#l00164">links_</a>, and <a class="el" href="ContactManager_8h-source.html#l00196">lock_</a>.</p>

<p>Referenced by <a class="el" href="BundleDaemon_8cc-source.html#l00180">dtn::BundleDaemon::get_routing_state()</a>.</p>

</div>
</div><p>
<a class="anchor" name="4a31131016ed7f6b11ce6823dd7abe91"></a><!-- doxytag: member="dtn::ContactManager::find_link" ref="4a31131016ed7f6b11ce6823dd7abe91" args="(const char *name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> dtn::ContactManager::find_link           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Finds link corresponding to this name. 
<p>

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

<p>References <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="ContactManager_8h-source.html#l00164">links_</a>, and <a class="el" href="ContactManager_8h-source.html#l00196">lock_</a>.</p>

<p>Referenced by <a class="el" href="TcaRouter_8cc-source.html#l00837">dtn::TcaRouter::create_link()</a>, <a class="el" href="BundleDaemon_8cc-source.html#l01050">dtn::BundleDaemon::handle_bundle_cancel()</a>, <a class="el" href="BundleDaemon_8cc-source.html#l01027">dtn::BundleDaemon::handle_bundle_send()</a>, <a class="el" href="BundleDaemon_8cc-source.html#l01546">dtn::BundleDaemon::handle_link_create()</a>, <a class="el" href="ContactManager_8cc-source.html#l00440">new_opportunistic_link()</a>, and <a class="el" href="DTLSRRouter_8cc-source.html#l00524">dtn::DTLSRRouter::recompute_routes()</a>.</p>

</div>
</div><p>
<a class="anchor" name="d6123f2dcfbba11d95100eb3cfb714bf"></a><!-- doxytag: member="dtn::ContactManager::find_link_to" ref="d6123f2dcfbba11d95100eb3cfb714bf" args="(ConvergenceLayer *cl, const std::string &amp;nexthop, const EndpointID &amp;remote_eid=EndpointID::NULL_EID(), Link::link_type_t type=Link::LINK_INVALID, u_int states=0xffffffff)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> dtn::ContactManager::find_link_to           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1ConvergenceLayer.html">ConvergenceLayer</a> *&nbsp;</td>
          <td class="paramname"> <em>cl</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>nexthop</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classdtn_1_1EndpointID.html">EndpointID</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>remote_eid</em> = <code>EndpointID::NULL_EID()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classdtn_1_1Link.html#a93653796d33692c67c415afd1edf61e">Link::link_type_t</a>&nbsp;</td>
          <td class="paramname"> <em>type</em> = <code>Link::LINK_INVALID</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int&nbsp;</td>
          <td class="paramname"> <em>states</em> = <code>0xffffffff</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Helper routine to find a link based on criteria:. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>cl</em>&nbsp;</td><td>The convergence layer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nexthop</em>&nbsp;</td><td>The next hop string </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>remote_eid</em>&nbsp;</td><td>Remote endpoint id (NULL_EID for any) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td><a class="el" href="classdtn_1_1Link.html" title="Abstraction for a DTN link, i.e.">Link</a> type (LINK_INVALID for any) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>states</em>&nbsp;</td><td>Bit vector of legal link states, e.g. ~(OPEN | OPENING)</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>The link if it matches or NULL if there's no match </dd></dl>

<p>Definition at line <a class="el" href="ContactManager_8cc-source.html#l00394">394</a> of file <a class="el" href="ContactManager_8cc-source.html">ContactManager.cc</a>.</p>

<p>References <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="EndpointID_8h-source.html#l00264">dtn::EndpointID::c_str()</a>, <a class="el" href="contacts_2Link_8h-source.html#l00112">dtn::Link::LINK_INVALID</a>, <a class="el" href="contacts_2Link_8h-source.html#l00149">dtn::Link::link_type_to_str()</a>, <a class="el" href="ContactManager_8h-source.html#l00164">links_</a>, <a class="el" href="ContactManager_8h-source.html#l00196">lock_</a>, <a class="el" href="ConvergenceLayer_8h-source.html#l00205">dtn::ConvergenceLayer::name()</a>, and <a class="el" href="EndpointID_8h-source.html#l00358">dtn::EndpointID::NULL_EID()</a>.</p>

<p>Referenced by <a class="el" href="CLConnection_8cc-source.html#l00261">dtn::CLConnection::find_contact()</a>, and <a class="el" href="Discovery_8cc-source.html#l00181">dtn::Discovery::handle_neighbor_discovered()</a>.</p>

</div>
</div><p>
<a class="anchor" name="d5bec308777a9655952aa729e9702a21"></a><!-- doxytag: member="dtn::ContactManager::handle_contact_up" ref="d5bec308777a9655952aa729e9702a21" args="(ContactUpEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::ContactManager::handle_contact_up           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1ContactUpEvent.html">ContactUpEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Event handler when a link is opened successfully. 
<p>

<p>Reimplemented from <a class="el" href="classdtn_1_1BundleEventHandler.html#79e3c093546c0829a33c211fe16d90bd">dtn::BundleEventHandler</a>.</p>

<p>Definition at line <a class="el" href="ContactManager_8cc-source.html#l00362">362</a> of file <a class="el" href="ContactManager_8cc-source.html">ContactManager.cc</a>.</p>

<p>References <a class="el" href="contacts_2Link_8h-source.html#l00119">dtn::Link::ALWAYSON</a>, <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="ContactManager_8cc-source.html#l00129">has_link()</a>, <a class="el" href="ContactManager_8h-source.html#l00196">lock_</a>, and <a class="el" href="contacts_2Link_8h-source.html#l00128">dtn::Link::ONDEMAND</a>.</p>

</div>
</div><p>
<a class="anchor" name="5b2577e0713d1d7882e2355d5077d86c"></a><!-- doxytag: member="dtn::ContactManager::handle_event" ref="5b2577e0713d1d7882e2355d5077d86c" args="(BundleEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::ContactManager::handle_event           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1BundleEvent.html">BundleEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Generic event handler. 
<p>

<p>Implements <a class="el" href="classdtn_1_1BundleEventHandler.html#792145d879547bde5c1f4a767eb5615b">dtn::BundleEventHandler</a>.</p>

<p>Definition at line <a class="el" href="ContactManager_8h-source.html#l00121">121</a> of file <a class="el" href="ContactManager_8h-source.html">ContactManager.h</a>.</p>

<p>References <a class="el" href="BundleEventHandler_8cc-source.html#l00030">dtn::BundleEventHandler::dispatch_event()</a>.</p>

<p>Referenced by <a class="el" href="BundleDaemon_8cc-source.html#l02393">dtn::BundleDaemon::handle_event()</a>.</p>

</div>
</div><p>
<a class="anchor" name="3f3ba023d235c5dc10c0a98ff8c92c37"></a><!-- doxytag: member="dtn::ContactManager::handle_link_available" ref="3f3ba023d235c5dc10c0a98ff8c92c37" args="(LinkAvailableEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::ContactManager::handle_link_available           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1LinkAvailableEvent.html">LinkAvailableEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Event handler when a link becomes unavailable. 
<p>

<p>Reimplemented from <a class="el" href="classdtn_1_1BundleEventHandler.html#a97f689c7f0969e186953a145f562076">dtn::BundleEventHandler</a>.</p>

<p>Definition at line <a class="el" href="ContactManager_8cc-source.html#l00249">249</a> of file <a class="el" href="ContactManager_8cc-source.html">ContactManager.cc</a>.</p>

<p>References <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="ContactManager_8h-source.html#l00191">availability_timers_</a>, <a class="el" href="ContactManager_8cc-source.html#l00129">has_link()</a>, and <a class="el" href="ContactManager_8h-source.html#l00196">lock_</a>.</p>

</div>
</div><p>
<a class="anchor" name="115f287ba3bdd3eff46ea65ca64572cc"></a><!-- doxytag: member="dtn::ContactManager::handle_link_created" ref="115f287ba3bdd3eff46ea65ca64572cc" args="(LinkCreatedEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::ContactManager::handle_link_created           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1LinkCreatedEvent.html">LinkCreatedEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Event handler when a link has been created. 
<p>

<p>Reimplemented from <a class="el" href="classdtn_1_1BundleEventHandler.html#4001d2fcc51a904c6ad2e6d6cc4989de">dtn::BundleEventHandler</a>.</p>

<p>Definition at line <a class="el" href="ContactManager_8cc-source.html#l00223">223</a> of file <a class="el" href="ContactManager_8cc-source.html">ContactManager.cc</a>.</p>

<p>References <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="ContactManager_8cc-source.html#l00129">has_link()</a>, and <a class="el" href="ContactManager_8h-source.html#l00196">lock_</a>.</p>

</div>
</div><p>
<a class="anchor" name="07720dcbbcd98f6e882f240dc4466b59"></a><!-- doxytag: member="dtn::ContactManager::handle_link_unavailable" ref="07720dcbbcd98f6e882f240dc4466b59" args="(LinkUnavailableEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::ContactManager::handle_link_unavailable           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1LinkUnavailableEvent.html">LinkUnavailableEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Event handler when a link becomes unavailable. 
<p>

<p>Reimplemented from <a class="el" href="classdtn_1_1BundleEventHandler.html#856841aa5d65c92fd583be6e8fcfd0f1">dtn::BundleEventHandler</a>.</p>

<p>Definition at line <a class="el" href="ContactManager_8cc-source.html#l00290">290</a> of file <a class="el" href="ContactManager_8cc-source.html">ContactManager.cc</a>.</p>

<p>References <a class="el" href="contacts_2Link_8h-source.html#l00119">dtn::Link::ALWAYSON</a>, <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="ContactManager_8h-source.html#l00191">availability_timers_</a>, <a class="el" href="ContactManager_8cc-source.html#l00129">has_link()</a>, <a class="el" href="BundleEvent_8h-source.html#l00506">dtn::ContactEvent::IDLE</a>, <a class="el" href="ContactManager_8h-source.html#l00185">LinkAvailabilityTimer</a>, <a class="el" href="ContactManager_8h-source.html#l00196">lock_</a>, <a class="el" href="contacts_2Link_8h-source.html#l00128">dtn::Link::ONDEMAND</a>, <a class="el" href="BundleEvent_8h-source.html#l00534">dtn::ContactEvent::reason_</a>, <a class="el" href="BundleEvent_8h-source.html#l00513">dtn::ContactEvent::reason_to_str()</a>, <a class="el" href="BundleEvent_8h-source.html#l00499">dtn::ContactEvent::USER</a>, and <a class="el" href="num2sdnv_8c-source.html#l00036">val</a>.</p>

</div>
</div><p>
<a class="anchor" name="3a3b3c9dfa58d1e88b80c5ad19fd1291"></a><!-- doxytag: member="dtn::ContactManager::has_link" ref="3a3b3c9dfa58d1e88b80c5ad19fd1291" args="(const char *name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> dtn::ContactManager::has_link           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check if contact manager already has a link by the same name. 
<p>

<p>Definition at line <a class="el" href="ContactManager_8cc-source.html#l00142">142</a> of file <a class="el" href="ContactManager_8cc-source.html">ContactManager.cc</a>.</p>

<p>References <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="ContactManager_8h-source.html#l00164">links_</a>, and <a class="el" href="ContactManager_8h-source.html#l00196">lock_</a>.</p>

</div>
</div><p>
<a class="anchor" name="b7beecc3d70f0917ac6c94b05c134320"></a><!-- doxytag: member="dtn::ContactManager::has_link" ref="b7beecc3d70f0917ac6c94b05c134320" args="(const LinkRef &amp;link)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> dtn::ContactManager::has_link           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>link</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check if contact manager already has this link. 
<p>

<p>Definition at line <a class="el" href="ContactManager_8cc-source.html#l00129">129</a> of file <a class="el" href="ContactManager_8cc-source.html">ContactManager.cc</a>.</p>

<p>References <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="ContactManager_8h-source.html#l00164">links_</a>, and <a class="el" href="ContactManager_8h-source.html#l00196">lock_</a>.</p>

<p>Referenced by <a class="el" href="ContactManager_8cc-source.html#l00048">add_new_link()</a>, <a class="el" href="ContactManager_8cc-source.html#l00071">del_link()</a>, <a class="el" href="ContactManager_8cc-source.html#l00362">handle_contact_up()</a>, <a class="el" href="ContactManager_8cc-source.html#l00249">handle_link_available()</a>, <a class="el" href="ContactManager_8cc-source.html#l00223">handle_link_created()</a>, <a class="el" href="ContactManager_8cc-source.html#l00290">handle_link_unavailable()</a>, and <a class="el" href="ContactManager_8cc-source.html#l00194">reopen_link()</a>.</p>

</div>
</div><p>
<a class="anchor" name="957c6cfac0575444e0a9a04a12708cf6"></a><!-- doxytag: member="dtn::ContactManager::links" ref="957c6cfac0575444e0a9a04a12708cf6" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classdtn_1_1LinkSet.html">LinkSet</a> * dtn::ContactManager::links           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Return the list of links. 
<p>
Asserts that the CM spin lock is held by the caller. 
<p>Definition at line <a class="el" href="ContactManager_8cc-source.html#l00176">176</a> of file <a class="el" href="ContactManager_8cc-source.html">ContactManager.cc</a>.</p>

<p>References <a class="el" href="ContactManager_8h-source.html#l00164">links_</a>, and <a class="el" href="ContactManager_8h-source.html#l00196">lock_</a>.</p>

<p>Referenced by <a class="el" href="BundleDaemon_8cc-source.html#l02265">dtn::BundleDaemon::delete_bundle()</a>, <a class="el" href="LinkCommand_8cc-source.html#l00056">dtn::LinkCommand::exec()</a>, <a class="el" href="BundleDaemon_8cc-source.html#l02026">dtn::BundleDaemon::handle_shutdown_request()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00253">dtn::TableBasedRouter::remove_from_deferred()</a>, <a class="el" href="BundleDaemon_8cc-source.html#l00227">dtn::BundleDaemon::reset_stats()</a>, and <a class="el" href="SimConvergenceLayer_8cc-source.html#l00486">dtnsim::SimConvergenceLayer::update_connectivity()</a>.</p>

</div>
</div><p>
<a class="anchor" name="6edebce9cf6080f854039f8df593cfec"></a><!-- doxytag: member="dtn::ContactManager::lock" ref="6edebce9cf6080f854039f8df593cfec" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">oasys::Lock* dtn::ContactManager::lock           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Accessor for the <a class="el" href="classdtn_1_1ContactManager.html" title="A contact manager class.">ContactManager</a> internal lock. 
<p>

<p>Definition at line <a class="el" href="ContactManager_8h-source.html#l00111">111</a> of file <a class="el" href="ContactManager_8h-source.html">ContactManager.h</a>.</p>

<p>References <a class="el" href="ContactManager_8h-source.html#l00196">lock_</a>.</p>

<p>Referenced by <a class="el" href="ContactManager_8cc-source.html#l00071">del_link()</a>, <a class="el" href="BundleDaemon_8cc-source.html#l02265">dtn::BundleDaemon::delete_bundle()</a>, <a class="el" href="LinkCommand_8cc-source.html#l00056">dtn::LinkCommand::exec()</a>, <a class="el" href="CLConnection_8cc-source.html#l00261">dtn::CLConnection::find_contact()</a>, <a class="el" href="BundleDaemon_8cc-source.html#l01803">dtn::BundleDaemon::handle_contact_up()</a>, <a class="el" href="BundleDaemon_8cc-source.html#l01546">dtn::BundleDaemon::handle_link_create()</a>, <a class="el" href="BundleDaemon_8cc-source.html#l01429">dtn::BundleDaemon::handle_link_state_change_request()</a>, <a class="el" href="StreamConvergenceLayer_8cc-source.html#l00827">dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_poll_timeout()</a>, <a class="el" href="BundleDaemon_8cc-source.html#l02026">dtn::BundleDaemon::handle_shutdown_request()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00253">dtn::TableBasedRouter::remove_from_deferred()</a>, <a class="el" href="BundleDaemon_8cc-source.html#l00227">dtn::BundleDaemon::reset_stats()</a>, and <a class="el" href="SimConvergenceLayer_8cc-source.html#l00486">dtnsim::SimConvergenceLayer::update_connectivity()</a>.</p>

</div>
</div><p>
<a class="anchor" name="a0e0738c54cc947fb03f765f3afcb03c"></a><!-- doxytag: member="dtn::ContactManager::new_opportunistic_link" ref="a0e0738c54cc947fb03f765f3afcb03c" args="(ConvergenceLayer *cl, const std::string &amp;nexthop, const EndpointID &amp;remote_eid, const std::string *link_name=NULL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> dtn::ContactManager::new_opportunistic_link           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1ConvergenceLayer.html">ConvergenceLayer</a> *&nbsp;</td>
          <td class="paramname"> <em>cl</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>nexthop</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classdtn_1_1EndpointID.html">EndpointID</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>remote_eid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string *&nbsp;</td>
          <td class="paramname"> <em>link_name</em> = <code>NULL</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Notification from a convergence layer that a new opportunistic link has come knocking. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>An idle link to represent the new contact </dd></dl>

<p>Definition at line <a class="el" href="ContactManager_8cc-source.html#l00440">440</a> of file <a class="el" href="ContactManager_8cc-source.html">ContactManager.cc</a>.</p>

<p>References <a class="el" href="ContactManager_8cc-source.html#l00048">add_new_link()</a>, <a class="el" href="EndpointID_8h-source.html#l00264">dtn::EndpointID::c_str()</a>, <a class="el" href="Link_8cc-source.html#l00058">dtn::Link::create_link()</a>, <a class="el" href="ContactManager_8cc-source.html#l00157">find_link()</a>, <a class="el" href="ContactManager_8h-source.html#l00196">lock_</a>, <a class="el" href="ConvergenceLayer_8h-source.html#l00205">dtn::ConvergenceLayer::name()</a>, <a class="el" href="contacts_2Link_8h-source.html#l00141">dtn::Link::OPPORTUNISTIC</a>, and <a class="el" href="ContactManager_8h-source.html#l00165">opportunistic_cnt_</a>.</p>

<p>Referenced by <a class="el" href="CLConnection_8cc-source.html#l00261">dtn::CLConnection::find_contact()</a>, and <a class="el" href="Discovery_8cc-source.html#l00181">dtn::Discovery::handle_neighbor_discovered()</a>.</p>

</div>
</div><p>
<a class="anchor" name="3041f1992bb72292e528a551a07cfcee"></a><!-- doxytag: member="dtn::ContactManager::reopen_link" ref="3041f1992bb72292e528a551a07cfcee" args="(const LinkRef &amp;link)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::ContactManager::reopen_link           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>link</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Reopen a broken link. 
<p>

<p>Definition at line <a class="el" href="ContactManager_8cc-source.html#l00194">194</a> of file <a class="el" href="ContactManager_8cc-source.html">ContactManager.cc</a>.</p>

<p>References <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="ContactManager_8h-source.html#l00191">availability_timers_</a>, <a class="el" href="ContactManager_8cc-source.html#l00129">has_link()</a>, <a class="el" href="ContactManager_8h-source.html#l00196">lock_</a>, <a class="el" href="contacts_2Link_8h-source.html#l00197">dtn::Link::OPEN</a>, <a class="el" href="BundleDaemon_8cc-source.html#l00134">dtn::BundleDaemon::post()</a>, <a class="el" href="BundleEvent_8h-source.html#l00505">dtn::ContactEvent::RECONNECT</a>, <a class="el" href="contacts_2Link_8h-source.html#l00216">dtn::Link::state_to_str()</a>, and <a class="el" href="contacts_2Link_8h-source.html#l00184">dtn::Link::UNAVAILABLE</a>.</p>

<p>Referenced by <a class="el" href="ContactManager_8cc-source.html#l00185">dtn::ContactManager::ContactManager::LinkAvailabilityTimer::timeout()</a>.</p>

</div>
</div><p>
<hr><h2>Friends And Related Function Documentation</h2>
<a class="anchor" name="98ebc5cec64f79d77a11fef41e91c143"></a><!-- doxytag: member="dtn::ContactManager::LinkAvailabilityTimer" ref="98ebc5cec64f79d77a11fef41e91c143" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">friend class <a class="el" href="classdtn_1_1ContactManager_1_1LinkAvailabilityTimer.html">LinkAvailabilityTimer</a><code> [friend]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="ContactManager_8h-source.html#l00185">185</a> of file <a class="el" href="ContactManager_8h-source.html">ContactManager.h</a>.</p>

<p>Referenced by <a class="el" href="ContactManager_8cc-source.html#l00290">handle_link_unavailable()</a>.</p>

</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="1176e45365aed6d561b8f39cacb72e57"></a><!-- doxytag: member="dtn::ContactManager::availability_timers_" ref="1176e45365aed6d561b8f39cacb72e57" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classdtn_1_1ContactManager.html#922dd0af3e3765e3bed149e87ae15c2d">AvailabilityTimerMap</a> <a class="el" href="classdtn_1_1ContactManager.html#1176e45365aed6d561b8f39cacb72e57">dtn::ContactManager::availability_timers_</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="ContactManager_8h-source.html#l00191">191</a> of file <a class="el" href="ContactManager_8h-source.html">ContactManager.h</a>.</p>

<p>Referenced by <a class="el" href="ContactManager_8cc-source.html#l00071">del_link()</a>, <a class="el" href="ContactManager_8cc-source.html#l00249">handle_link_available()</a>, <a class="el" href="ContactManager_8cc-source.html#l00290">handle_link_unavailable()</a>, and <a class="el" href="ContactManager_8cc-source.html#l00194">reopen_link()</a>.</p>

</div>
</div><p>
<a class="anchor" name="ade8809a7e4850c4a55fe497c14a8ca2"></a><!-- doxytag: member="dtn::ContactManager::links_" ref="ade8809a7e4850c4a55fe497c14a8ca2" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classdtn_1_1LinkSet.html">LinkSet</a>* <a class="el" href="classdtn_1_1ContactManager.html#ade8809a7e4850c4a55fe497c14a8ca2">dtn::ContactManager::links_</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set of all links. 
<p>

<p>Definition at line <a class="el" href="ContactManager_8h-source.html#l00164">164</a> of file <a class="el" href="ContactManager_8h-source.html">ContactManager.h</a>.</p>

<p>Referenced by <a class="el" href="ContactManager_8cc-source.html#l00048">add_new_link()</a>, <a class="el" href="ContactManager_8cc-source.html#l00033">ContactManager()</a>, <a class="el" href="ContactManager_8cc-source.html#l00071">del_link()</a>, <a class="el" href="ContactManager_8cc-source.html#l00497">dump()</a>, <a class="el" href="ContactManager_8cc-source.html#l00157">find_link()</a>, <a class="el" href="ContactManager_8cc-source.html#l00394">find_link_to()</a>, <a class="el" href="ContactManager_8cc-source.html#l00129">has_link()</a>, <a class="el" href="ContactManager_8cc-source.html#l00176">links()</a>, and <a class="el" href="ContactManager_8cc-source.html#l00041">~ContactManager()</a>.</p>

</div>
</div><p>
<a class="anchor" name="2748e832f0ce4a43762af436e744dfdc"></a><!-- doxytag: member="dtn::ContactManager::lock_" ref="2748e832f0ce4a43762af436e744dfdc" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">oasys::SpinLock <a class="el" href="classdtn_1_1ContactManager.html#2748e832f0ce4a43762af436e744dfdc">dtn::ContactManager::lock_</a><code> [mutable, protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Lock to protect internal data structures. 
<p>

<p>Definition at line <a class="el" href="ContactManager_8h-source.html#l00196">196</a> of file <a class="el" href="ContactManager_8h-source.html">ContactManager.h</a>.</p>

<p>Referenced by <a class="el" href="ContactManager_8cc-source.html#l00048">add_new_link()</a>, <a class="el" href="ContactManager_8cc-source.html#l00071">del_link()</a>, <a class="el" href="ContactManager_8cc-source.html#l00497">dump()</a>, <a class="el" href="ContactManager_8cc-source.html#l00157">find_link()</a>, <a class="el" href="ContactManager_8cc-source.html#l00394">find_link_to()</a>, <a class="el" href="ContactManager_8cc-source.html#l00362">handle_contact_up()</a>, <a class="el" href="ContactManager_8cc-source.html#l00249">handle_link_available()</a>, <a class="el" href="ContactManager_8cc-source.html#l00223">handle_link_created()</a>, <a class="el" href="ContactManager_8cc-source.html#l00290">handle_link_unavailable()</a>, <a class="el" href="ContactManager_8cc-source.html#l00129">has_link()</a>, <a class="el" href="ContactManager_8cc-source.html#l00176">links()</a>, <a class="el" href="ContactManager_8h-source.html#l00111">lock()</a>, <a class="el" href="ContactManager_8cc-source.html#l00440">new_opportunistic_link()</a>, and <a class="el" href="ContactManager_8cc-source.html#l00194">reopen_link()</a>.</p>

</div>
</div><p>
<a class="anchor" name="b6a08ccc691316966419782cd58cd0ce"></a><!-- doxytag: member="dtn::ContactManager::opportunistic_cnt_" ref="b6a08ccc691316966419782cd58cd0ce" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classdtn_1_1ContactManager.html#b6a08ccc691316966419782cd58cd0ce">dtn::ContactManager::opportunistic_cnt_</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Counter for opportunistic links. 
<p>

<p>Definition at line <a class="el" href="ContactManager_8h-source.html#l00165">165</a> of file <a class="el" href="ContactManager_8h-source.html">ContactManager.h</a>.</p>

<p>Referenced by <a class="el" href="ContactManager_8cc-source.html#l00440">new_opportunistic_link()</a>.</p>

</div>
</div><p>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="ContactManager_8h-source.html">ContactManager.h</a><li><a class="el" href="ContactManager_8cc-source.html">ContactManager.cc</a></ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 30 09:27:03 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>