Sophie

Sophie

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

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::Discovery 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_1Discovery.html">Discovery</a>
  </div>
</div>
<div class="contents">
<h1>dtn::Discovery Class Reference</h1><!-- doxytag: class="dtn::Discovery" -->Abstraction of neighbor discovery agent.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="Discovery_8h-source.html">Discovery.h</a>&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for dtn::Discovery:</div>
<div class="dynsection">

<p><center><img src="classdtn_1_1Discovery.png" usemap="#dtn::Discovery_map" border="0" alt=""></center>
<map name="dtn::Discovery_map">
<area href="classdtn_1_1IPDiscovery.html" alt="dtn::IPDiscovery" shape="rect" coords="0,56,104,80">
</map>
</div>

<p>
<a href="classdtn_1_1Discovery-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const std::string &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1Discovery.html#28f6c94d28520370db8c09c8b5881b8f">name</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Name of this <a class="el" href="classdtn_1_1Discovery.html" title="Abstraction of neighbor discovery agent.">Discovery</a> instance.  <a href="#28f6c94d28520370db8c09c8b5881b8f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const std::string &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1Discovery.html#d7c9a3ccbbd873c1bdf3ecbcb7c57fb1">af</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Address family represented by this <a class="el" href="classdtn_1_1Discovery.html" title="Abstraction of neighbor discovery agent.">Discovery</a> instance.  <a href="#d7c9a3ccbbd873c1bdf3ecbcb7c57fb1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const std::string &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1Discovery.html#557dc2728857713d10d32d0acf103fcd">to_addr</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Outbound address of advertisements sent by this <a class="el" href="classdtn_1_1Discovery.html" title="Abstraction of neighbor discovery agent.">Discovery</a> instance.  <a href="#557dc2728857713d10d32d0acf103fcd"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const std::string &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1Discovery.html#49013a21df2b9804c1632265fa2fadb0">local_addr</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Local address on which to listen for advertisements.  <a href="#49013a21df2b9804c1632265fa2fadb0"></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_1Discovery.html#a380c76912923a5a2f5ead66d92f2259">dump</a> (oasys::StringBuffer *<a class="el" href="num2sdnv_8c.html#a81cdcc7ff6987bc85c073253e32715f">buf</a>)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Append snapshot of object state to StringBuffer.  <a href="#a380c76912923a5a2f5ead66d92f2259"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1Discovery.html#f9d87f0da923ab6ede111146b3348771">shutdown</a> ()=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close down listening socket and stop the thread.  <a href="#f9d87f0da923ab6ede111146b3348771"></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_1Discovery.html#17302a43a3e0ee32249b9fbc9b58e1f8">announce</a> (const char *name, int argc, const char *argv[])</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Register an <a class="el" href="classdtn_1_1Announce.html" title="Announce represents a ConvergenceLayer (Interface).">Announce</a> to advertise a local convergence layer and to respond to advertisements from neighbors.  <a href="#17302a43a3e0ee32249b9fbc9b58e1f8"></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_1Discovery.html#a176e99fdc0426d8cb6bbb75e9e34b0c">remove</a> (const char *name)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove registration for named announce object.  <a href="#a176e99fdc0426d8cb6bbb75e9e34b0c"></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_1Discovery.html#6b6da97e92e834b9997b9fc2812fe74b">handle_neighbor_discovered</a> (const std::string &amp;cl_type, const std::string &amp;cl_addr, const <a class="el" href="classdtn_1_1EndpointID.html">EndpointID</a> &amp;remote_eid)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Handle neighbor discovery out to registered DiscoveryInfo objects.  <a href="#6b6da97e92e834b9997b9fc2812fe74b"></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_1Discovery.html#aaadd0d123505014b40b619f68649f1a">~Discovery</a> ()</td></tr>

<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classdtn_1_1Discovery.html">Discovery</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1Discovery.html#a4db7b5f18c029eb30bf5f90a8b872a3">create_discovery</a> (const std::string &amp;name, const std::string &amp;afname, int argc, const char *argv[], const char **error)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Factory method for instantiating objects from the appropriate derived class.  <a href="#a4db7b5f18c029eb30bf5f90a8b872a3"></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::list&lt; <a class="el" href="classdtn_1_1Announce.html">Announce</a> * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1Discovery.html#409a7b1face715e4b04b811a779d9b69">List</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::list&lt; <a class="el" href="classdtn_1_1Announce.html">Announce</a> * &gt;<br class="typebreak">
::<a class="el" href="classdtn_1_1Discovery.html#e046ec0e0ebde9cf34e14d94e56ea3bf">iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1Discovery.html#e046ec0e0ebde9cf34e14d94e56ea3bf">iterator</a></td></tr>

<tr><td colspan="2"><br><h2>Protected 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_1Discovery.html#aa536748f814cdce863b347d2be9b6c5">Discovery</a> (const std::string &amp;name, const std::string &amp;af)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor.  <a href="#aa536748f814cdce863b347d2be9b6c5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1Discovery.html#ddea830e6b09b41a73d98deaba7733a1">configure</a> (int argc, const char *argv[])=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Configure this <a class="el" href="classdtn_1_1Discovery.html" title="Abstraction of neighbor discovery agent.">Discovery</a> instance.  <a href="#ddea830e6b09b41a73d98deaba7733a1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1Discovery.html#08dc1eadc966b0cd59ee5fcc11b8d0d8">handle_announce</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Optional handler for new <a class="el" href="classdtn_1_1Announce.html" title="Announce represents a ConvergenceLayer (Interface).">Announce</a> registration.  <a href="#08dc1eadc966b0cd59ee5fcc11b8d0d8"></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_1Discovery.html#2194b4baca2e632b1f4335c02ae33344">find</a> (const char *name, <a class="el" href="classdtn_1_1Discovery.html#e046ec0e0ebde9cf34e14d94e56ea3bf">iterator</a> *iter)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find a registration by name.  <a href="#2194b4baca2e632b1f4335c02ae33344"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1Discovery.html#d4185c5818cecaa562007ceffe6094be">name_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">name of discovery agent  <a href="#d4185c5818cecaa562007ceffe6094be"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1Discovery.html#7f8f0dea257fee3d3c6b3518b46c8ac0">af_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">address family  <a href="#7f8f0dea257fee3d3c6b3518b46c8ac0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1Discovery.html#57590a19bd9c6b2502d336e5d6ac1f2f">to_addr_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">outbound address of advertisements sent  <a href="#57590a19bd9c6b2502d336e5d6ac1f2f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1Discovery.html#f969a96a14aed8cad5b8cf6a8e47f6cd">local_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">address of beacon listener  <a href="#f969a96a14aed8cad5b8cf6a8e47f6cd"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classdtn_1_1Discovery.html#409a7b1face715e4b04b811a779d9b69">List</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1Discovery.html#7fb0c15e93e20fccdf1bb439aefa34e3">list_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">registered <a class="el" href="classdtn_1_1Announce.html" title="Announce represents a ConvergenceLayer (Interface).">Announce</a> objects  <a href="#7fb0c15e93e20fccdf1bb439aefa34e3"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Private 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_1Discovery.html#889fcde794689b2156dfeb50c8e61024">Discovery</a> (const <a class="el" href="classdtn_1_1Discovery.html">Discovery</a> &amp;)</td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Abstraction of neighbor discovery agent. 
<p>
Much like <a class="el" href="classdtn_1_1Interface.html" title="Abstraction of a local dtn interface.">Interface</a>, <a class="el" href="classdtn_1_1Discovery.html" title="Abstraction of neighbor discovery agent.">Discovery</a> is generally created by the configuration file / console. Derived classes (such as <a class="el" href="classdtn_1_1IPDiscovery.html" title="IPDiscovery is the main thread in IP-based neighbor discovery, configured via config...">IPDiscovery</a>) typically bind to a UDP socket to listen for neighbor beacons. Bluetooth has built-in discovery mechanisms, so BluetoothDiscovery polls via Inquiry instead of listen()ing on a socket.<p>
To advertise a local convergence layer, register its local address (and port) by calling "discovery add_cl". For each registered CL, <a class="el" href="classdtn_1_1Discovery.html" title="Abstraction of neighbor discovery agent.">Discovery</a> will advertise (outbound) the CL's presence to neighbors, and distribute (inbound) each event of neighbor discovery to each CL. 
<p>Definition at line <a class="el" href="Discovery_8h-source.html#l00043">43</a> of file <a class="el" href="Discovery_8h-source.html">Discovery.h</a>.</p>
<hr><h2>Member Typedef Documentation</h2>
<a class="anchor" name="e046ec0e0ebde9cf34e14d94e56ea3bf"></a><!-- doxytag: member="dtn::Discovery::iterator" ref="e046ec0e0ebde9cf34e14d94e56ea3bf" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef std::list&lt;<a class="el" href="classdtn_1_1Announce.html">Announce</a>*&gt;::<a class="el" href="classdtn_1_1Discovery.html#e046ec0e0ebde9cf34e14d94e56ea3bf">iterator</a> <a class="el" href="classdtn_1_1Discovery.html#e046ec0e0ebde9cf34e14d94e56ea3bf">dtn::Discovery::iterator</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="Discovery_8h-source.html#l00106">106</a> of file <a class="el" href="Discovery_8h-source.html">Discovery.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="409a7b1face715e4b04b811a779d9b69"></a><!-- doxytag: member="dtn::Discovery::List" ref="409a7b1face715e4b04b811a779d9b69" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef std::list&lt;<a class="el" href="classdtn_1_1Announce.html">Announce</a>*&gt; <a class="el" href="classdtn_1_1Discovery.html#409a7b1face715e4b04b811a779d9b69">dtn::Discovery::List</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="Discovery_8h-source.html#l00105">105</a> of file <a class="el" href="Discovery_8h-source.html">Discovery.h</a>.</p>

</div>
</div><p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="aaadd0d123505014b40b619f68649f1a"></a><!-- doxytag: member="dtn::Discovery::~Discovery" ref="aaadd0d123505014b40b619f68649f1a" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">dtn::Discovery::~Discovery           </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="Discovery_8cc-source.html#l00082">82</a> of file <a class="el" href="Discovery_8cc-source.html">Discovery.cc</a>.</p>

<p>References <a class="el" href="Discovery_8h-source.html#l00133">list_</a>.</p>

</div>
</div><p>
<a class="anchor" name="aa536748f814cdce863b347d2be9b6c5"></a><!-- doxytag: member="dtn::Discovery::Discovery" ref="aa536748f814cdce863b347d2be9b6c5" args="(const std::string &amp;name, const std::string &amp;af)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">dtn::Discovery::Discovery           </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>af</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Constructor. 
<p>

<p>Definition at line <a class="el" href="Discovery_8cc-source.html#l00034">34</a> of file <a class="el" href="Discovery_8cc-source.html">Discovery.cc</a>.</p>

</div>
</div><p>
<a class="anchor" name="889fcde794689b2156dfeb50c8e61024"></a><!-- doxytag: member="dtn::Discovery::Discovery" ref="889fcde794689b2156dfeb50c8e61024" args="(const Discovery &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">dtn::Discovery::Discovery           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classdtn_1_1Discovery.html">Discovery</a> &amp;&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="Discovery_8h-source.html#l00135">135</a> of file <a class="el" href="Discovery_8h-source.html">Discovery.h</a>.</p>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="d7c9a3ccbbd873c1bdf3ecbcb7c57fb1"></a><!-- doxytag: member="dtn::Discovery::af" ref="d7c9a3ccbbd873c1bdf3ecbcb7c57fb1" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const std::string&amp; dtn::Discovery::af           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Address family represented by this <a class="el" href="classdtn_1_1Discovery.html" title="Abstraction of neighbor discovery agent.">Discovery</a> instance. 
<p>

<p>Definition at line <a class="el" href="Discovery_8h-source.html#l00054">54</a> of file <a class="el" href="Discovery_8h-source.html">Discovery.h</a>.</p>

<p>References <a class="el" href="Discovery_8h-source.html#l00130">af_</a>.</p>

</div>
</div><p>
<a class="anchor" name="17302a43a3e0ee32249b9fbc9b58e1f8"></a><!-- doxytag: member="dtn::Discovery::announce" ref="17302a43a3e0ee32249b9fbc9b58e1f8" args="(const char *name, int argc, const char *argv[])" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> dtn::Discovery::announce           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>argc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>argv</em>[]</td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Register an <a class="el" href="classdtn_1_1Announce.html" title="Announce represents a ConvergenceLayer (Interface).">Announce</a> to advertise a local convergence layer and to respond to advertisements from neighbors. 
<p>

<p>Definition at line <a class="el" href="Discovery_8cc-source.html#l00108">108</a> of file <a class="el" href="Discovery_8cc-source.html">Discovery.cc</a>.</p>

<p>References <a class="el" href="Announce_8cc-source.html#l00028">dtn::Announce::create_announce()</a>, <a class="el" href="Discovery_8cc-source.html#l00165">find()</a>, <a class="el" href="ConvergenceLayer_8cc-source.html#l00078">dtn::ConvergenceLayer::find_clayer()</a>, <a class="el" href="Discovery_8h-source.html#l00122">handle_announce()</a>, and <a class="el" href="Discovery_8h-source.html#l00133">list_</a>.</p>

<p>Referenced by <a class="el" href="DiscoveryCommand_8cc-source.html#l00052">dtn::DiscoveryCommand::exec()</a>, <a class="el" href="Discovery_8cc-source.html#l00165">find()</a>, <a class="el" href="Discovery_8cc-source.html#l00147">remove()</a>, and <a class="el" href="IPDiscovery_8cc-source.html#l00122">dtn::IPDiscovery::run()</a>.</p>

</div>
</div><p>
<a class="anchor" name="ddea830e6b09b41a73d98deaba7733a1"></a><!-- doxytag: member="dtn::Discovery::configure" ref="ddea830e6b09b41a73d98deaba7733a1" args="(int argc, const char *argv[])=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> dtn::Discovery::configure           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>argc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>argv</em>[]</td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Configure this <a class="el" href="classdtn_1_1Discovery.html" title="Abstraction of neighbor discovery agent.">Discovery</a> instance. 
<p>

<p>Implemented in <a class="el" href="classdtn_1_1IPDiscovery.html#3705ccea8c5e02f26aa9082a0bcca0c8">dtn::IPDiscovery</a>.</p>

<p>Referenced by <a class="el" href="Discovery_8cc-source.html#l00043">create_discovery()</a>.</p>

</div>
</div><p>
<a class="anchor" name="a4db7b5f18c029eb30bf5f90a8b872a3"></a><!-- doxytag: member="dtn::Discovery::create_discovery" ref="a4db7b5f18c029eb30bf5f90a8b872a3" args="(const std::string &amp;name, const std::string &amp;afname, int argc, const char *argv[], const char **error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classdtn_1_1Discovery.html">Discovery</a> * dtn::Discovery::create_discovery           </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>afname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>argc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>argv</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char **&nbsp;</td>
          <td class="paramname"> <em>error</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Factory method for instantiating objects from the appropriate derived class. 
<p>

<p>Definition at line <a class="el" href="Discovery_8cc-source.html#l00043">43</a> of file <a class="el" href="Discovery_8cc-source.html">Discovery.cc</a>.</p>

<p>References <a class="el" href="classdtn_1_1Discovery.html#ddea830e6b09b41a73d98deaba7733a1">configure()</a>.</p>

<p>Referenced by <a class="el" href="DiscoveryTable_8cc-source.html#l00068">dtn::DiscoveryTable::add()</a>.</p>

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

<p>
Append snapshot of object state to StringBuffer. 
<p>

<p>Definition at line <a class="el" href="Discovery_8cc-source.html#l00092">92</a> of file <a class="el" href="Discovery_8cc-source.html">Discovery.cc</a>.</p>

<p>References <a class="el" href="Discovery_8h-source.html#l00130">af_</a>, <a class="el" href="Discovery_8h-source.html#l00133">list_</a>, <a class="el" href="Discovery_8h-source.html#l00129">name_</a>, and <a class="el" href="Discovery_8h-source.html#l00131">to_addr_</a>.</p>

<p>Referenced by <a class="el" href="DiscoveryTable_8cc-source.html#l00118">dtn::DiscoveryTable::dump()</a>.</p>

</div>
</div><p>
<a class="anchor" name="2194b4baca2e632b1f4335c02ae33344"></a><!-- doxytag: member="dtn::Discovery::find" ref="2194b4baca2e632b1f4335c02ae33344" args="(const char *name, iterator *iter)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> dtn::Discovery::find           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classdtn_1_1Discovery.html#e046ec0e0ebde9cf34e14d94e56ea3bf">Discovery::iterator</a> *&nbsp;</td>
          <td class="paramname"> <em>iter</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Find a registration by name. 
<p>

<p>Definition at line <a class="el" href="Discovery_8cc-source.html#l00165">165</a> of file <a class="el" href="Discovery_8cc-source.html">Discovery.cc</a>.</p>

<p>References <a class="el" href="Discovery_8cc-source.html#l00108">announce()</a>, <a class="el" href="Discovery_8h-source.html#l00133">list_</a>, and <a class="el" href="Announce_8h-source.html#l00049">dtn::Announce::name()</a>.</p>

<p>Referenced by <a class="el" href="Discovery_8cc-source.html#l00108">announce()</a>, and <a class="el" href="Discovery_8cc-source.html#l00147">remove()</a>.</p>

</div>
</div><p>
<a class="anchor" name="08dc1eadc966b0cd59ee5fcc11b8d0d8"></a><!-- doxytag: member="dtn::Discovery::handle_announce" ref="08dc1eadc966b0cd59ee5fcc11b8d0d8" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void dtn::Discovery::handle_announce           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Optional handler for new <a class="el" href="classdtn_1_1Announce.html" title="Announce represents a ConvergenceLayer (Interface).">Announce</a> registration. 
<p>

<p>Reimplemented in <a class="el" href="classdtn_1_1IPDiscovery.html#f111297820476cf22fc94d9bcd1a0b4b">dtn::IPDiscovery</a>.</p>

<p>Definition at line <a class="el" href="Discovery_8h-source.html#l00122">122</a> of file <a class="el" href="Discovery_8h-source.html">Discovery.h</a>.</p>

<p>Referenced by <a class="el" href="Discovery_8cc-source.html#l00108">announce()</a>.</p>

</div>
</div><p>
<a class="anchor" name="6b6da97e92e834b9997b9fc2812fe74b"></a><!-- doxytag: member="dtn::Discovery::handle_neighbor_discovered" ref="6b6da97e92e834b9997b9fc2812fe74b" args="(const std::string &amp;cl_type, const std::string &amp;cl_addr, const EndpointID &amp;remote_eid)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::Discovery::handle_neighbor_discovered           </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>cl_type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>cl_addr</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><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Handle neighbor discovery out to registered DiscoveryInfo objects. 
<p>

<p>Definition at line <a class="el" href="Discovery_8cc-source.html#l00181">181</a> of file <a class="el" href="Discovery_8cc-source.html">Discovery.cc</a>.</p>

<p>References <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="contacts_2Link_8h-source.html#l00187">dtn::Link::AVAILABLE</a>, <a class="el" href="BundleEvent_8h-source.html#l00501">dtn::ContactEvent::DISCOVERY</a>, <a class="el" href="ConvergenceLayer_8cc-source.html#l00078">dtn::ConvergenceLayer::find_clayer()</a>, <a class="el" href="ContactManager_8cc-source.html#l00394">dtn::ContactManager::find_link_to()</a>, <a class="el" href="ContactManager_8cc-source.html#l00440">dtn::ContactManager::new_opportunistic_link()</a>, and <a class="el" href="BundleDaemon_8cc-source.html#l00134">dtn::BundleDaemon::post()</a>.</p>

<p>Referenced by <a class="el" href="IPDiscovery_8cc-source.html#l00122">dtn::IPDiscovery::run()</a>.</p>

</div>
</div><p>
<a class="anchor" name="49013a21df2b9804c1632265fa2fadb0"></a><!-- doxytag: member="dtn::Discovery::local_addr" ref="49013a21df2b9804c1632265fa2fadb0" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const std::string&amp; dtn::Discovery::local_addr           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Local address on which to listen for advertisements. 
<p>

<p>Definition at line <a class="el" href="Discovery_8h-source.html#l00064">64</a> of file <a class="el" href="Discovery_8h-source.html">Discovery.h</a>.</p>

<p>References <a class="el" href="Discovery_8h-source.html#l00132">local_</a>.</p>

</div>
</div><p>
<a class="anchor" name="28f6c94d28520370db8c09c8b5881b8f"></a><!-- doxytag: member="dtn::Discovery::name" ref="28f6c94d28520370db8c09c8b5881b8f" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const std::string&amp; dtn::Discovery::name           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Name of this <a class="el" href="classdtn_1_1Discovery.html" title="Abstraction of neighbor discovery agent.">Discovery</a> instance. 
<p>

<p>Definition at line <a class="el" href="Discovery_8h-source.html#l00049">49</a> of file <a class="el" href="Discovery_8h-source.html">Discovery.h</a>.</p>

<p>References <a class="el" href="Discovery_8h-source.html#l00129">name_</a>.</p>

<p>Referenced by <a class="el" href="DiscoveryTable_8cc-source.html#l00054">dtn::DiscoveryTable::find()</a>.</p>

</div>
</div><p>
<a class="anchor" name="a176e99fdc0426d8cb6bbb75e9e34b0c"></a><!-- doxytag: member="dtn::Discovery::remove" ref="a176e99fdc0426d8cb6bbb75e9e34b0c" 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::Discovery::remove           </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>
Remove registration for named announce object. 
<p>

<p>Definition at line <a class="el" href="Discovery_8cc-source.html#l00147">147</a> of file <a class="el" href="Discovery_8cc-source.html">Discovery.cc</a>.</p>

<p>References <a class="el" href="Discovery_8cc-source.html#l00108">announce()</a>, <a class="el" href="Discovery_8cc-source.html#l00165">find()</a>, and <a class="el" href="Discovery_8h-source.html#l00133">list_</a>.</p>

<p>Referenced by <a class="el" href="DiscoveryCommand_8cc-source.html#l00052">dtn::DiscoveryCommand::exec()</a>.</p>

</div>
</div><p>
<a class="anchor" name="f9d87f0da923ab6ede111146b3348771"></a><!-- doxytag: member="dtn::Discovery::shutdown" ref="f9d87f0da923ab6ede111146b3348771" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void dtn::Discovery::shutdown           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Close down listening socket and stop the thread. 
<p>
Derived classes should NOT auto-delete. 
<p>Implemented in <a class="el" href="classdtn_1_1IPDiscovery.html#94633c542ce6d031e5583899e0496f00">dtn::IPDiscovery</a>.</p>

<p>Referenced by <a class="el" href="DiscoveryTable_8cc-source.html#l00096">dtn::DiscoveryTable::del()</a>, and <a class="el" href="DiscoveryTable_8cc-source.html#l00040">dtn::DiscoveryTable::shutdown()</a>.</p>

</div>
</div><p>
<a class="anchor" name="557dc2728857713d10d32d0acf103fcd"></a><!-- doxytag: member="dtn::Discovery::to_addr" ref="557dc2728857713d10d32d0acf103fcd" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const std::string&amp; dtn::Discovery::to_addr           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Outbound address of advertisements sent by this <a class="el" href="classdtn_1_1Discovery.html" title="Abstraction of neighbor discovery agent.">Discovery</a> instance. 
<p>

<p>Definition at line <a class="el" href="Discovery_8h-source.html#l00059">59</a> of file <a class="el" href="Discovery_8h-source.html">Discovery.h</a>.</p>

<p>References <a class="el" href="Discovery_8h-source.html#l00131">to_addr_</a>.</p>

</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="7f8f0dea257fee3d3c6b3518b46c8ac0"></a><!-- doxytag: member="dtn::Discovery::af_" ref="7f8f0dea257fee3d3c6b3518b46c8ac0" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::string <a class="el" href="classdtn_1_1Discovery.html#7f8f0dea257fee3d3c6b3518b46c8ac0">dtn::Discovery::af_</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
address family 
<p>

<p>Definition at line <a class="el" href="Discovery_8h-source.html#l00130">130</a> of file <a class="el" href="Discovery_8h-source.html">Discovery.h</a>.</p>

<p>Referenced by <a class="el" href="Discovery_8h-source.html#l00054">af()</a>, and <a class="el" href="Discovery_8cc-source.html#l00092">dump()</a>.</p>

</div>
</div><p>
<a class="anchor" name="7fb0c15e93e20fccdf1bb439aefa34e3"></a><!-- doxytag: member="dtn::Discovery::list_" ref="7fb0c15e93e20fccdf1bb439aefa34e3" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classdtn_1_1Discovery.html#409a7b1face715e4b04b811a779d9b69">List</a> <a class="el" href="classdtn_1_1Discovery.html#7fb0c15e93e20fccdf1bb439aefa34e3">dtn::Discovery::list_</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
registered <a class="el" href="classdtn_1_1Announce.html" title="Announce represents a ConvergenceLayer (Interface).">Announce</a> objects 
<p>

<p>Definition at line <a class="el" href="Discovery_8h-source.html#l00133">133</a> of file <a class="el" href="Discovery_8h-source.html">Discovery.h</a>.</p>

<p>Referenced by <a class="el" href="Discovery_8cc-source.html#l00108">announce()</a>, <a class="el" href="Discovery_8cc-source.html#l00092">dump()</a>, <a class="el" href="Discovery_8cc-source.html#l00165">find()</a>, <a class="el" href="Discovery_8cc-source.html#l00147">remove()</a>, <a class="el" href="IPDiscovery_8cc-source.html#l00122">dtn::IPDiscovery::run()</a>, and <a class="el" href="Discovery_8cc-source.html#l00082">~Discovery()</a>.</p>

</div>
</div><p>
<a class="anchor" name="f969a96a14aed8cad5b8cf6a8e47f6cd"></a><!-- doxytag: member="dtn::Discovery::local_" ref="f969a96a14aed8cad5b8cf6a8e47f6cd" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::string <a class="el" href="classdtn_1_1Discovery.html#f969a96a14aed8cad5b8cf6a8e47f6cd">dtn::Discovery::local_</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
address of beacon listener 
<p>

<p>Definition at line <a class="el" href="Discovery_8h-source.html#l00132">132</a> of file <a class="el" href="Discovery_8h-source.html">Discovery.h</a>.</p>

<p>Referenced by <a class="el" href="IPDiscovery_8cc-source.html#l00051">dtn::IPDiscovery::configure()</a>, and <a class="el" href="Discovery_8h-source.html#l00064">local_addr()</a>.</p>

</div>
</div><p>
<a class="anchor" name="d4185c5818cecaa562007ceffe6094be"></a><!-- doxytag: member="dtn::Discovery::name_" ref="d4185c5818cecaa562007ceffe6094be" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::string <a class="el" href="classdtn_1_1Discovery.html#d4185c5818cecaa562007ceffe6094be">dtn::Discovery::name_</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
name of discovery agent 
<p>

<p>Definition at line <a class="el" href="Discovery_8h-source.html#l00129">129</a> of file <a class="el" href="Discovery_8h-source.html">Discovery.h</a>.</p>

<p>Referenced by <a class="el" href="Discovery_8cc-source.html#l00092">dump()</a>, and <a class="el" href="Discovery_8h-source.html#l00049">name()</a>.</p>

</div>
</div><p>
<a class="anchor" name="57590a19bd9c6b2502d336e5d6ac1f2f"></a><!-- doxytag: member="dtn::Discovery::to_addr_" ref="57590a19bd9c6b2502d336e5d6ac1f2f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::string <a class="el" href="classdtn_1_1Discovery.html#57590a19bd9c6b2502d336e5d6ac1f2f">dtn::Discovery::to_addr_</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
outbound address of advertisements sent 
<p>

<p>Definition at line <a class="el" href="Discovery_8h-source.html#l00131">131</a> of file <a class="el" href="Discovery_8h-source.html">Discovery.h</a>.</p>

<p>Referenced by <a class="el" href="IPDiscovery_8cc-source.html#l00051">dtn::IPDiscovery::configure()</a>, <a class="el" href="Discovery_8cc-source.html#l00092">dump()</a>, and <a class="el" href="Discovery_8h-source.html#l00059">to_addr()</a>.</p>

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