<!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 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 List</span></a></li> <li><a href="classes.html"><span>Class Index</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class 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 <<a class="el" href="ext_8h_source.html">cc++/rtp.h</a>></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"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_t_p_duplex.html#9daa075cfae8ef404f3158660736b286">RTPDuplex</a> (const InetAddress &bind, tpport_t local, tpport_t remote)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_t_p_duplex.html#7fd455d5cf064c1da4a2a9bb897242c0">connect</a> (const InetHostAddress &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 </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 </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 </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 &na, tpport_t &tp)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_t_p_duplex.html#809ca7d773a477897b89d25480d2f4bf">setDataPeer</a> (const InetAddress &, tpport_t)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_t_p_duplex.html#5ff45b797428c956156a4a965f318d03">setControlPeer</a> (const InetAddress &, tpport_t)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">size_t </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> & </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 & Destructor Documentation</h2> <a class="anchor" name="9daa075cfae8ef404f3158660736b286"></a><!-- doxytag: member="RTPDuplex::RTPDuplex" ref="9daa075cfae8ef404f3158660736b286" args="(const InetAddress &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 & </td> <td class="paramname"> <em>bind</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">tpport_t </td> <td class="paramname"> <em>local</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">tpport_t </td> <td class="paramname"> <em>remote</em></td><td> </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> </td><td>network address this socket is to be bound </td></tr> <tr><td valign="top"></td><td valign="top"><em>local</em> </td><td>transport port this socket is to be bound </td></tr> <tr><td valign="top"></td><td valign="top"><em>remote</em> </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> ) </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 &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 & </td> <td class="paramname"> <em>host</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">tpport_t </td> <td class="paramname"> <em>port</em> = <code>0</code></td><td> </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> </td><td>peer address </td></tr> <tr><td valign="top"></td><td valign="top"><em>port</em> </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> ) </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>& RTPDuplex::getPeer </td> <td>(</td> <td class="paramname"> </td> <td> ) </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> </td> <td class="paramname"> <em>timeout</em> </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>timeout</em> </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 &na, tpport_t &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 * </td> <td class="paramname"> <em>buffer</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>len</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">InetHostAddress & </td> <td class="paramname"> <em>na</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">tpport_t & </td> <td class="paramname"> <em>tp</em></td><td> </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> </td><td>where to store the retrieved data </td></tr> <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>how many octets to read </td></tr> <tr><td valign="top"></td><td valign="top"><em>na</em> </td><td>Source network address. </td></tr> <tr><td valign="top"></td><td valign="top"><em>tp</em> </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 </td> <td class="paramname"> <em>buffer</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>len</em></td><td> </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> </td><td>pointer to data to be written </td></tr> <tr><td valign="top"></td><td valign="top"><em>len</em> </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 &, 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 & </td> <td class="paramname">, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">tpport_t </td> <td class="paramname"></td><td> </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> </td><td>peer host network address. </td></tr> <tr><td valign="top"></td><td valign="top"><em>-</em> </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 &, 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 & </td> <td class="paramname">, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">tpport_t </td> <td class="paramname"></td><td> </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> </td><td>peer host network address. </td></tr> <tr><td valign="top"></td><td valign="top"><em>-</em> </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 <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>