<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>ccRTP: OutgoingDataQueue Class Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.4.4 --> <div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a> | <a class="qindex" href="pages.html">Related Pages</a> | <a class="qindex" href="examples.html">Examples</a></div> <h1>OutgoingDataQueue Class Reference<br> <small> [<a class="el" href="group__oqueue.html">Generic RTP output queues.</a>, <a class="el" href="group__oqueue.html">Generic RTP output queues.</a>]</small> </h1><!-- doxytag: class="OutgoingDataQueue" --><!-- doxytag: inherits="OutgoingDataQueueBase,DestinationListHandler" -->A generic outgoing RTP data queue supporting multiple destinations. <a href="#_details">More...</a> <p> <code>#include <<a class="el" href="oqueue_8h-source.html">oqueue.h</a>></code> <p> <p>Inheritance diagram for OutgoingDataQueue: <p><center><img src="class_outgoing_data_queue.png" usemap="#OutgoingDataQueue_map" border="0" alt=""></center> <map name="OutgoingDataQueue_map"> <area href="class_outgoing_data_queue_base.html" alt="OutgoingDataQueueBase" shape="rect" coords="0,56,155,80"> <area href="class_destination_list_handler.html" alt="DestinationListHandler" shape="rect" coords="165,56,320,80"> <area href="class_r_t_p_queue_base.html" alt="RTPQueueBase" shape="rect" coords="0,0,155,24"> <area href="class_r_t_p_data_queue.html" alt="RTPDataQueue" shape="rect" coords="82,168,237,192"> <area href="class_queue_r_t_c_p_manager.html" alt="QueueRTCPManager" shape="rect" coords="0,224,155,248"> <area href="class_r_t_p_duplex.html" alt="RTPDuplex" shape="rect" coords="165,224,320,248"> <area href="class_a_v_p_queue.html" alt="AVPQueue" shape="rect" coords="0,280,155,304"> </map> <a href="class_outgoing_data_queue-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">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a0">addDestination</a> (const InetHostAddress &ia, tpport_t dataPort=<a class="el" href="base_8h.html#a4">DefaultRTPDataPort</a>, tpport_t controlPort=0)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a1">addDestination</a> (const InetMcastAddress &ia, tpport_t dataPort=<a class="el" href="base_8h.html#a4">DefaultRTPDataPort</a>, tpport_t controlPort=0)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a2">forgetDestination</a> (const InetHostAddress &ia, tpport_t dataPort=<a class="el" href="base_8h.html#a4">DefaultRTPDataPort</a>, tpport_t controlPort=0)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a3">forgetDestination</a> (const InetMcastAddress &ia, tpport_t dataPort=<a class="el" href="base_8h.html#a4">DefaultRTPDataPort</a>, tpport_t controlPort=0)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a4">addContributor</a> (uint32 csrc)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Add csrc as the CSRC identifier of a new contributor. <a href="#a4"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a5">removeContributor</a> (uint32 csrc)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Remove CSRC from the list of contributors. <a href="#a5"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a6">isSending</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Determine if outgoing packets are waiting to send. <a href="#a6"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a7">putData</a> (uint32 stamp, const unsigned char *data=NULL, size_t len=0)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This is used to create a data packet in the send queue. <a href="#a7"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a8">setPadding</a> (uint8 paddinglen)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set padding. <a href="#a8"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a9">setMark</a> (bool mark)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set marker bit for the packet in which the next data provided will be send. <a href="#a9"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a10">getMark</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get wheter the mark bit will be set in the next packet. <a href="#a10"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a11">setPartial</a> (uint32 timestamp, unsigned char *data, size_t offset, size_t max)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set partial data for an already queued packet. <a href="#a11"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="base_8h.html#a2">microtimeout_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a12">getDefaultSchedulingTimeout</a> () const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a13">setSchedulingTimeout</a> (<a class="el" href="base_8h.html#a2">microtimeout_t</a> to)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the default scheduling timeout to use when no data packets are waiting to be sent. <a href="#a13"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="base_8h.html#a2">microtimeout_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a14">getDefaultExpireTimeout</a> () const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a15">setExpireTimeout</a> (<a class="el" href="base_8h.html#a2">microtimeout_t</a> to)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the "expired" timer for expiring packets pending in the send queue which have gone unsent and are already "too late" to be sent now. <a href="#a15"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="base_8h.html#a2">microtimeout_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a16">getExpireTimeout</a> () const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a17">getSendPacketCount</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the total number of packets sent so far. <a href="#a17"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a18">getSendOctetCount</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the total number of octets (payload only) sent so far. <a href="#a18"></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"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#b0">OutgoingDataQueue</a> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#b1">~OutgoingDataQueue</a> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="base_8h.html#a2">microtimeout_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#b2">getSchedulingTimeout</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This computes the timeout period for scheduling transmission of the next packet at the "head" of the send buffer. <a href="#b2"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#b3">dispatchDataPacket</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This function is used by the service thread to process the next outgoing packet pending in the sending queue. <a href="#b3"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#b4">setInitialTimestamp</a> (uint32 ts)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#b5">getInitialTimestamp</a> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#b6">purgeOutgoingQueue</a> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#b7">setControlPeer</a> (const InetAddress &host, tpport_t port)=0</td></tr> <tr><td colspan="2"><br><h2>Classes</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_outgoing_data_queue_1_1_outgoing_r_t_p_pkt_link.html">OutgoingRTPPktLink</a></td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> A generic outgoing RTP data queue supporting multiple destinations. <p> <dl compact><dt><b>Author:</b></dt><dd>Federico Montesino Pouzols <<a href="mailto:fedemp@altern.org">fedemp@altern.org</a>></dd></dl> <p> <hr><h2>Constructor & Destructor Documentation</h2> <a class="anchor" name="b0"></a><!-- doxytag: member="OutgoingDataQueue::OutgoingDataQueue" ref="b0" args="()" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">OutgoingDataQueue::OutgoingDataQueue </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [protected]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> </td> </tr> </table> <a class="anchor" name="b1"></a><!-- doxytag: member="OutgoingDataQueue::~OutgoingDataQueue" ref="b1" args="()" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">virtual OutgoingDataQueue::~OutgoingDataQueue </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [inline, protected, virtual]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> </td> </tr> </table> <hr><h2>Member Function Documentation</h2> <a class="anchor" name="a4"></a><!-- doxytag: member="OutgoingDataQueue::addContributor" ref="a4" args="(uint32 csrc)" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">void OutgoingDataQueue::addContributor </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">uint32 </td> <td class="mdname1" valign="top" nowrap> <em>csrc</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Add csrc as the CSRC identifier of a new contributor. <p> This method adds the CSRC identifier to a list of contributors that will be inserted in every packet enqueued from now on. </td> </tr> </table> <a class="anchor" name="a1"></a><!-- doxytag: member="OutgoingDataQueue::addDestination" ref="a1" args="(const InetMcastAddress &ia, tpport_t dataPort=DefaultRTPDataPort, tpport_t controlPort=0)" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">bool OutgoingDataQueue::addDestination </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const InetMcastAddress & </td> <td class="mdname" nowrap> <em>ia</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>tpport_t </td> <td class="mdname" nowrap> <em>dataPort</em> = <code><a class="el" href="base_8h.html#a4">DefaultRTPDataPort</a></code>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>tpport_t </td> <td class="mdname" nowrap> <em>controlPort</em> = <code>0</code></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> </td> </tr> </table> <a class="anchor" name="a0"></a><!-- doxytag: member="OutgoingDataQueue::addDestination" ref="a0" args="(const InetHostAddress &ia, tpport_t dataPort=DefaultRTPDataPort, tpport_t controlPort=0)" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">bool OutgoingDataQueue::addDestination </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const InetHostAddress & </td> <td class="mdname" nowrap> <em>ia</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>tpport_t </td> <td class="mdname" nowrap> <em>dataPort</em> = <code><a class="el" href="base_8h.html#a4">DefaultRTPDataPort</a></code>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>tpport_t </td> <td class="mdname" nowrap> <em>controlPort</em> = <code>0</code></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> </td> </tr> </table> <a class="anchor" name="b3"></a><!-- doxytag: member="OutgoingDataQueue::dispatchDataPacket" ref="b3" args="()" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">size_t OutgoingDataQueue::dispatchDataPacket </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [protected]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> This function is used by the service thread to process the next outgoing packet pending in the sending queue. <p> <dl compact><dt><b>Returns:</b></dt><dd>number of bytes sent. 0 if silent, <0 if error.</dd></dl> </td> </tr> </table> <a class="anchor" name="a3"></a><!-- doxytag: member="OutgoingDataQueue::forgetDestination" ref="a3" args="(const InetMcastAddress &ia, tpport_t dataPort=DefaultRTPDataPort, tpport_t controlPort=0)" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">bool OutgoingDataQueue::forgetDestination </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const InetMcastAddress & </td> <td class="mdname" nowrap> <em>ia</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>tpport_t </td> <td class="mdname" nowrap> <em>dataPort</em> = <code><a class="el" href="base_8h.html#a4">DefaultRTPDataPort</a></code>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>tpport_t </td> <td class="mdname" nowrap> <em>controlPort</em> = <code>0</code></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> </td> </tr> </table> <a class="anchor" name="a2"></a><!-- doxytag: member="OutgoingDataQueue::forgetDestination" ref="a2" args="(const InetHostAddress &ia, tpport_t dataPort=DefaultRTPDataPort, tpport_t controlPort=0)" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">bool OutgoingDataQueue::forgetDestination </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const InetHostAddress & </td> <td class="mdname" nowrap> <em>ia</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>tpport_t </td> <td class="mdname" nowrap> <em>dataPort</em> = <code><a class="el" href="base_8h.html#a4">DefaultRTPDataPort</a></code>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>tpport_t </td> <td class="mdname" nowrap> <em>controlPort</em> = <code>0</code></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> </td> </tr> </table> <a class="anchor" name="a14"></a><!-- doxytag: member="OutgoingDataQueue::getDefaultExpireTimeout" ref="a14" args="() const " --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="base_8h.html#a2">microtimeout_t</a> OutgoingDataQueue::getDefaultExpireTimeout </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap> const<code> [inline]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> </td> </tr> </table> <a class="anchor" name="a12"></a><!-- doxytag: member="OutgoingDataQueue::getDefaultSchedulingTimeout" ref="a12" args="() const " --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="base_8h.html#a2">microtimeout_t</a> OutgoingDataQueue::getDefaultSchedulingTimeout </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap> const<code> [inline]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> </td> </tr> </table> <a class="anchor" name="a16"></a><!-- doxytag: member="OutgoingDataQueue::getExpireTimeout" ref="a16" args="() const " --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="base_8h.html#a2">microtimeout_t</a> OutgoingDataQueue::getExpireTimeout </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap> const<code> [inline]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> </td> </tr> </table> <a class="anchor" name="b5"></a><!-- doxytag: member="OutgoingDataQueue::getInitialTimestamp" ref="b5" args="()" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">uint32 OutgoingDataQueue::getInitialTimestamp </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [inline, protected]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> </td> </tr> </table> <a class="anchor" name="a10"></a><!-- doxytag: member="OutgoingDataQueue::getMark" ref="a10" args="() const " --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">bool OutgoingDataQueue::getMark </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap> const<code> [inline]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Get wheter the mark bit will be set in the next packet. <p> </td> </tr> </table> <a class="anchor" name="b2"></a><!-- doxytag: member="OutgoingDataQueue::getSchedulingTimeout" ref="b2" args="()" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="base_8h.html#a2">microtimeout_t</a> OutgoingDataQueue::getSchedulingTimeout </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [protected]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> This computes the timeout period for scheduling transmission of the next packet at the "head" of the send buffer. <p> If no packets are waiting, a default timeout is used. This actually forms the "isPending()" timeout of the rtp receiver in the service thread.<p> <dl compact><dt><b>Returns:</b></dt><dd>timeout until next packet is scheduled to send.</dd></dl> </td> </tr> </table> <a class="anchor" name="a18"></a><!-- doxytag: member="OutgoingDataQueue::getSendOctetCount" ref="a18" args="() const " --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">uint32 OutgoingDataQueue::getSendOctetCount </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap> const<code> [inline]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Get the total number of octets (payload only) sent so far. <p> <dl compact><dt><b>Returns:</b></dt><dd>total number of payload octets sent in RTP packets.</dd></dl> </td> </tr> </table> <a class="anchor" name="a17"></a><!-- doxytag: member="OutgoingDataQueue::getSendPacketCount" ref="a17" args="() const " --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">uint32 OutgoingDataQueue::getSendPacketCount </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap> const<code> [inline]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Get the total number of packets sent so far. <p> <dl compact><dt><b>Returns:</b></dt><dd>total number of packets sent</dd></dl> </td> </tr> </table> <a class="anchor" name="a6"></a><!-- doxytag: member="OutgoingDataQueue::isSending" ref="a6" args="() const " --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">bool OutgoingDataQueue::isSending </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap> const</td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Determine if outgoing packets are waiting to send. <p> <dl compact><dt><b>Returns:</b></dt><dd>true if there are packets waiting to be send.</dd></dl> </td> </tr> </table> <a class="anchor" name="b6"></a><!-- doxytag: member="OutgoingDataQueue::purgeOutgoingQueue" ref="b6" args="()" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">void OutgoingDataQueue::purgeOutgoingQueue </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [protected]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> </td> </tr> </table> <a class="anchor" name="a7"></a><!-- doxytag: member="OutgoingDataQueue::putData" ref="a7" args="(uint32 stamp, const unsigned char *data=NULL, size_t len=0)" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">void OutgoingDataQueue::putData </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">uint32 </td> <td class="mdname" nowrap> <em>stamp</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>const unsigned char * </td> <td class="mdname" nowrap> <em>data</em> = <code>NULL</code>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>size_t </td> <td class="mdname" nowrap> <em>len</em> = <code>0</code></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> This is used to create a data packet in the send queue. <p> Sometimes a "NULL" or empty packet will be used instead, and these are known as "silent" packets. "Silent" packets are used simply to "push" the scheduler along more accurately by giving the appearence that a next packet is waiting to be sent and to provide a valid timestamp for that packet.<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>stamp</em> </td><td>Timestamp for expected send time of packet. </td></tr> <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>Value or NULL if special "silent" packet. </td></tr> <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>May be 0 to indicate a default by payload type.</td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="a5"></a><!-- doxytag: member="OutgoingDataQueue::removeContributor" ref="a5" args="(uint32 csrc)" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">bool OutgoingDataQueue::removeContributor </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">uint32 </td> <td class="mdname1" valign="top" nowrap> <em>csrc</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Remove CSRC from the list of contributors. <p> </td> </tr> </table> <a class="anchor" name="b7"></a><!-- doxytag: member="OutgoingDataQueue::setControlPeer" ref="b7" args="(const InetAddress &host, tpport_t port)=0" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">virtual void OutgoingDataQueue::setControlPeer </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const InetAddress & </td> <td class="mdname" nowrap> <em>host</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>tpport_t </td> <td class="mdname" nowrap> <em>port</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"><code> [protected, pure virtual]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> <p> Implemented in <a class="el" href="class_r_t_p_duplex.html#b4">RTPDuplex</a>. </td> </tr> </table> <a class="anchor" name="a15"></a><!-- doxytag: member="OutgoingDataQueue::setExpireTimeout" ref="a15" args="(microtimeout_t to)" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">void OutgoingDataQueue::setExpireTimeout </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="base_8h.html#a2">microtimeout_t</a> </td> <td class="mdname1" valign="top" nowrap> <em>to</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [inline]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Set the "expired" timer for expiring packets pending in the send queue which have gone unsent and are already "too late" to be sent now. <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>to</em> </td><td>timeout to expire unsent packets in milliseconds.</td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="b4"></a><!-- doxytag: member="OutgoingDataQueue::setInitialTimestamp" ref="b4" args="(uint32 ts)" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">void OutgoingDataQueue::setInitialTimestamp </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">uint32 </td> <td class="mdname1" valign="top" nowrap> <em>ts</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [inline, protected]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> </td> </tr> </table> <a class="anchor" name="a9"></a><!-- doxytag: member="OutgoingDataQueue::setMark" ref="a9" args="(bool mark)" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">void OutgoingDataQueue::setMark </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">bool </td> <td class="mdname1" valign="top" nowrap> <em>mark</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [inline]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Set marker bit for the packet in which the next data provided will be send. <p> When transmitting audio, should be set for the first packet of a talk spurt. When transmitting video, should be set for the last packet for a video frame.<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>mark</em> </td><td>Marker bit value for next packet.</td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="a8"></a><!-- doxytag: member="OutgoingDataQueue::setPadding" ref="a8" args="(uint8 paddinglen)" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">void OutgoingDataQueue::setPadding </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">uint8 </td> <td class="mdname1" valign="top" nowrap> <em>paddinglen</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [inline]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Set padding. <p> All outgoing packets will be transparently padded to a multiple of paddinglen.<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>paddinglen</em> </td><td>pad packets to a length multiple of paddinglen.</td></tr> </table> </dl> </td> </tr> </table> <a class="anchor" name="a11"></a><!-- doxytag: member="OutgoingDataQueue::setPartial" ref="a11" args="(uint32 timestamp, unsigned char *data, size_t offset, size_t max)" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">size_t OutgoingDataQueue::setPartial </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">uint32 </td> <td class="mdname" nowrap> <em>timestamp</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>unsigned char * </td> <td class="mdname" nowrap> <em>data</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>size_t </td> <td class="mdname" nowrap> <em>offset</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>size_t </td> <td class="mdname" nowrap> <em>max</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Set partial data for an already queued packet. <p> This is often used for multichannel data.<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>timestamp</em> </td><td>Timestamp of packet. </td></tr> <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>Buffer to copy from. </td></tr> <tr><td valign="top"></td><td valign="top"><em>offset</em> </td><td>Offset to copy from. </td></tr> <tr><td valign="top"></td><td valign="top"><em>max</em> </td><td>Maximum data size. </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>Number of packet data bytes set.</dd></dl> </td> </tr> </table> <a class="anchor" name="a13"></a><!-- doxytag: member="OutgoingDataQueue::setSchedulingTimeout" ref="a13" args="(microtimeout_t to)" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">void OutgoingDataQueue::setSchedulingTimeout </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="base_8h.html#a2">microtimeout_t</a> </td> <td class="mdname1" valign="top" nowrap> <em>to</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [inline]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Set the default scheduling timeout to use when no data packets are waiting to be sent. <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>to</em> </td><td>timeout in milliseconds.</td></tr> </table> </dl> </td> </tr> </table> <hr>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="oqueue_8h-source.html">oqueue.h</a></ul> <hr size="1"><address style="align: right;"><small>Generated on Fri Dec 9 22:32:04 2005 for ccRTP by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address> </body> </html>