Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 598246a3099b0106d22dd5249478d3b7 > files > 112

ccrtp-devel-1.7.1-2.fc12.i686.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>ccRTP: RTPDuplex 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.9 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</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>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="classes.html"><span>Class&nbsp;Index</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>
<div class="contents">
<h1>RTPDuplex Class Reference<br>
<small>
[<a class="el" href="group__rtpext.html">ccRTP Extension classes</a>]</small>
</h1><!-- doxytag: class="RTPDuplex" --><!-- doxytag: inherits="RTPDataQueue" -->A peer associated RTP socket pair for physically connected peer hosts.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="ext_8h_source.html">cc++/rtp.h</a>&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for RTPDuplex:</div>
<div class="dynsection">

<p><center><img src="class_r_t_p_duplex.png" usemap="#RTPDuplex_map" border="0" alt=""></center>
<map name="RTPDuplex_map">
<area href="class_r_t_p_data_queue.html" alt="RTPDataQueue" shape="rect" coords="660,168,815,192">
<area href="class_incoming_data_queue.html" alt="IncomingDataQueue" shape="rect" coords="247,112,402,136">
<area href="class_outgoing_data_queue.html" alt="OutgoingDataQueue" shape="rect" coords="1072,112,1227,136">
<area href="class_incoming_data_queue_base.html" alt="IncomingDataQueueBase" shape="rect" coords="0,56,155,80">
<area href="class_membership_bookkeeping.html" alt="MembershipBookkeeping" shape="rect" coords="495,56,650,80">
<area href="class_outgoing_data_queue_base.html" alt="OutgoingDataQueueBase" shape="rect" coords="990,56,1145,80">
<area href="class_destination_list_handler.html" alt="DestinationListHandler" shape="rect" coords="1155,56,1310,80">
<area href="class_r_t_p_queue_base.html" alt="RTPQueueBase" shape="rect" coords="0,0,155,24">
<area href="class_sync_source_handler.html" alt="SyncSourceHandler" shape="rect" coords="165,0,320,24">
<area href="class_participant_handler.html" alt="ParticipantHandler" shape="rect" coords="330,0,485,24">
<area href="class_application_handler.html" alt="ApplicationHandler" shape="rect" coords="495,0,650,24">
<area href="class_conflict_handler.html" alt="ConflictHandler" shape="rect" coords="660,0,815,24">
<area href="class_members.html" alt="Members" shape="rect" coords="825,0,980,24">
<area href="class_r_t_p_queue_base.html" alt="RTPQueueBase" shape="rect" coords="990,0,1145,24">
</map>
</div>

<p>
<a href="class_r_t_p_duplex-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">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_t_p_duplex.html#9daa075cfae8ef404f3158660736b286">RTPDuplex</a> (const InetAddress &amp;bind, tpport_t local, tpport_t remote)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_t_p_duplex.html#cc94f5784a104aefea3e1e77a28df46f">~RTPDuplex</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">UDPTransmit::Error&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_t_p_duplex.html#7fd455d5cf064c1da4a2a9bb897242c0">connect</a> (const InetHostAddress &amp;host, tpport_t port=0)</td></tr>

<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_t_p_duplex.html#48eea122a1f60c696a5b181ee56ceeef">isPendingData</a> (<a class="el" href="base_8h.html#c16d853255145e6a903914eb376a84bb">microtimeout_t</a> timeout)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_t_p_duplex.html#ebfc491272d576a5d79a0ff499daafcc">sendData</a> (const unsigned char *const buffer, size_t len)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_t_p_duplex.html#bb5f6c2e9c218c0cf1ab40d1ffae24ad">recvData</a> (unsigned char *buffer, size_t len, InetHostAddress &amp;na, tpport_t &amp;tp)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_t_p_duplex.html#809ca7d773a477897b89d25480d2f4bf">setDataPeer</a> (const InetAddress &amp;, tpport_t)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_t_p_duplex.html#5ff45b797428c956156a4a965f318d03">setControlPeer</a> (const InetAddress &amp;, tpport_t)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_t_p_duplex.html#d23a35fc2e42bb04d354fe8c8c9b2471">getNextDataPacketSize</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_sync_source.html">SyncSource</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_t_p_duplex.html#d6bf1470be83322891d7a4691cae349d">getPeer</a> ()</td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
A peer associated RTP socket pair for physically connected peer hosts. 
<p>
This has no RTCP and assumes the receiver is connected to a known transmitter, hence no "foreign" packets will arrive.<p>
<dl class="author" compact><dt><b>Author:</b></dt><dd>David Sugar RTP peer host over UDP. </dd></dl>
<dl compact><dt><b>Examples: </b></dt><dd>

<p>
<a class="el" href="rtpduphello_8cpp-example.html#_a0">rtpduphello.cpp</a>.</dl><hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="9daa075cfae8ef404f3158660736b286"></a><!-- doxytag: member="RTPDuplex::RTPDuplex" ref="9daa075cfae8ef404f3158660736b286" args="(const InetAddress &amp;bind, tpport_t local, tpport_t remote)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">RTPDuplex::RTPDuplex           </td>
          <td>(</td>
          <td class="paramtype">const InetAddress &amp;&nbsp;</td>
          <td class="paramname"> <em>bind</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tpport_t&nbsp;</td>
          <td class="paramname"> <em>local</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tpport_t&nbsp;</td>
          <td class="paramname"> <em>remote</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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>bind</em>&nbsp;</td><td>network address this socket is to be bound </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>local</em>&nbsp;</td><td>transport port this socket is to be bound </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>remote</em>&nbsp;</td><td>peer transpor port </td></tr>
  </table>
</dl>

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

<p>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="7fd455d5cf064c1da4a2a9bb897242c0"></a><!-- doxytag: member="RTPDuplex::connect" ref="7fd455d5cf064c1da4a2a9bb897242c0" args="(const InetHostAddress &amp;host, tpport_t port=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">UDPTransmit::Error RTPDuplex::connect           </td>
          <td>(</td>
          <td class="paramtype">const InetHostAddress &amp;&nbsp;</td>
          <td class="paramname"> <em>host</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tpport_t&nbsp;</td>
          <td class="paramname"> <em>port</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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>host</em>&nbsp;</td><td>peer address </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>port</em>&nbsp;</td><td>peer port. If not specified, the same as the local is used </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>socket status </dd></dl>

</div>
</div><p>
<a class="anchor" name="d23a35fc2e42bb04d354fe8c8c9b2471"></a><!-- doxytag: member="RTPDuplex::getNextDataPacketSize" ref="d23a35fc2e42bb04d354fe8c8c9b2471" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t RTPDuplex::getNextDataPacketSize           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline, protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Implements <a class="el" href="class_incoming_data_queue.html#c884b9005077f3320e6b9b5fc3694589">IncomingDataQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="d6bf1470be83322891d7a4691cae349d"></a><!-- doxytag: member="RTPDuplex::getPeer" ref="d6bf1470be83322891d7a4691cae349d" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_sync_source.html">SyncSource</a>&amp; RTPDuplex::getPeer           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the associated peer information </dd></dl>

</div>
</div><p>
<a class="anchor" name="48eea122a1f60c696a5b181ee56ceeef"></a><!-- doxytag: member="RTPDuplex::isPendingData" ref="48eea122a1f60c696a5b181ee56ceeef" args="(microtimeout_t timeout)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool RTPDuplex::isPendingData           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="base_8h.html#c16d853255145e6a903914eb376a84bb">microtimeout_t</a>&nbsp;</td>
          <td class="paramname"> <em>timeout</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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>timeout</em>&nbsp;</td><td>how much time to wait for new data </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>if there is some new data </dd></dl>

<p>Implements <a class="el" href="class_r_t_p_data_queue.html#55e55a5fe67dfd3bec5ed7ea553b9c8d">RTPDataQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="bb5f6c2e9c218c0cf1ab40d1ffae24ad"></a><!-- doxytag: member="RTPDuplex::recvData" ref="bb5f6c2e9c218c0cf1ab40d1ffae24ad" args="(unsigned char *buffer, size_t len, InetHostAddress &amp;na, tpport_t &amp;tp)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t RTPDuplex::recvData           </td>
          <td>(</td>
          <td class="paramtype">unsigned char *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">InetHostAddress &amp;&nbsp;</td>
          <td class="paramname"> <em>na</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tpport_t &amp;&nbsp;</td>
          <td class="paramname"> <em>tp</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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>buffer</em>&nbsp;</td><td>where to store the retrieved data </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>how many octets to read </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>na</em>&nbsp;</td><td>Source network address. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>tp</em>&nbsp;</td><td>Source transport port. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>number of octets read </dd></dl>

<p>Implements <a class="el" href="class_incoming_data_queue.html#ea541eb5abb237557d63d131160ce5f0">IncomingDataQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="ebfc491272d576a5d79a0ff499daafcc"></a><!-- doxytag: member="RTPDuplex::sendData" ref="ebfc491272d576a5d79a0ff499daafcc" args="(const unsigned char *const buffer, size_t len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t RTPDuplex::sendData           </td>
          <td>(</td>
          <td class="paramtype">const unsigned char *const &nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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>buffer</em>&nbsp;</td><td>pointer to data to be written </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>how many octets to write </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>number of octets written </dd></dl>

<p>Reimplemented from <a class="el" href="class_outgoing_data_queue.html">OutgoingDataQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="5ff45b797428c956156a4a965f318d03"></a><!-- doxytag: member="RTPDuplex::setControlPeer" ref="5ff45b797428c956156a4a965f318d03" args="(const InetAddress &amp;, tpport_t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void RTPDuplex::setControlPeer           </td>
          <td>(</td>
          <td class="paramtype">const InetAddress &amp;&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tpport_t&nbsp;</td>
          <td class="paramname"></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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>-</em>&nbsp;</td><td>peer host network address. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>-</em>&nbsp;</td><td>peer host RTCP transport port. </td></tr>
  </table>
</dl>

<p>Reimplemented from <a class="el" href="class_outgoing_data_queue.html#122915159f16fa0aa269c7408b1094f7">OutgoingDataQueue</a>.</p>

</div>
</div><p>
<a class="anchor" name="809ca7d773a477897b89d25480d2f4bf"></a><!-- doxytag: member="RTPDuplex::setDataPeer" ref="809ca7d773a477897b89d25480d2f4bf" args="(const InetAddress &amp;, tpport_t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void RTPDuplex::setDataPeer           </td>
          <td>(</td>
          <td class="paramtype">const InetAddress &amp;&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tpport_t&nbsp;</td>
          <td class="paramname"></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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>-</em>&nbsp;</td><td>peer host network address. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>-</em>&nbsp;</td><td>peer host RTP data transport port. </td></tr>
  </table>
</dl>

<p>Reimplemented from <a class="el" href="class_outgoing_data_queue.html">OutgoingDataQueue</a>.</p>

</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="ext_8h_source.html">ext.h</a></ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 24 21:42:25 2009 for ccRTP by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>