root/doc/html/classitpp_1_1TCP__Receiver.html @ 353

Revision 353, 13.1 kB (checked in by smidl, 16 years ago)

doc

Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>mixpp: itpp::TCP_Receiver Class Reference</title>
4<link href="tabs.css" rel="stylesheet" type="text/css">
5<link href="doxygen.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.8 -->
8<script type="text/javascript">
9<!--
10function changeDisplayState (e){
11  var num=this.id.replace(/[^[0-9]/g,'');
12  var button=this.firstChild;
13  var sectionDiv=document.getElementById('dynsection'+num);
14  if (sectionDiv.style.display=='none'||sectionDiv.style.display==''){
15    sectionDiv.style.display='block';
16    button.src='open.gif';
17  }else{
18    sectionDiv.style.display='none';
19    button.src='closed.gif';
20  }
21}
22function initDynSections(){
23  var divs=document.getElementsByTagName('div');
24  var sectionCounter=1;
25  for(var i=0;i<divs.length-1;i++){
26    if(divs[i].className=='dynheader'&&divs[i+1].className=='dynsection'){
27      var header=divs[i];
28      var section=divs[i+1];
29      var button=header.firstChild;
30      if (button!='IMG'){
31        divs[i].insertBefore(document.createTextNode(' '),divs[i].firstChild);
32        button=document.createElement('img');
33        divs[i].insertBefore(button,divs[i].firstChild);
34      }
35      header.style.cursor='pointer';
36      header.onclick=changeDisplayState;
37      header.id='dynheader'+sectionCounter;
38      button.src='closed.gif';
39      section.id='dynsection'+sectionCounter;
40      section.style.display='none';
41      section.style.marginLeft='14px';
42      sectionCounter++;
43    }
44  }
45}
46window.onload = initDynSections;
47-->
48</script>
49<div class="navigation" id="top">
50  <div class="tabs">
51    <ul>
52      <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
53      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
54      <li><a href="modules.html"><span>Modules</span></a></li>
55      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
56      <li><a href="files.html"><span>Files</span></a></li>
57    </ul>
58  </div>
59  <div class="tabs">
60    <ul>
61      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
62      <li><a href="classes.html"><span>Class&nbsp;Index</span></a></li>
63      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
64      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
65    </ul>
66  </div>
67  <div class="navpath"><b>itpp</b>::<a class="el" href="classitpp_1_1TCP__Receiver.html">TCP_Receiver</a>
68  </div>
69</div>
70<div class="contents">
71<h1>itpp::TCP_Receiver Class Reference<br>
72<small>
73[<a class="el" href="group__protocol.html">Protocols Module</a>]</small>
74</h1><!-- doxytag: class="itpp::TCP_Receiver" --><code>#include &lt;<a class="el" href="tcp_8h-source.html">tcp.h</a>&gt;</code>
75<p>
76
77<p>
78<a href="classitpp_1_1TCP__Receiver-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
79<tr><td></td></tr>
80<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
81<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="292137238c2e689b06b8c2b0c14b92bd"></a><!-- doxytag: member="itpp::TCP_Receiver::TCP_Receiver" ref="292137238c2e689b06b8c2b0c14b92bd" args="(int label)" -->
82&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Receiver.html#292137238c2e689b06b8c2b0c14b92bd">TCP_Receiver</a> (int label)</td></tr>
83
84<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">ADD DOCUMENTATION HERE. <br></td></tr>
85<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a20bc9efb49443cdf8fed3db6ef49bb0"></a><!-- doxytag: member="itpp::TCP_Receiver::~TCP_Receiver" ref="a20bc9efb49443cdf8fed3db6ef49bb0" args="()" -->
86virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Receiver.html#a20bc9efb49443cdf8fed3db6ef49bb0">~TCP_Receiver</a> ()</td></tr>
87
88<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">ADD DOCUMENTATION HERE. <br></td></tr>
89<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2d9c335981c19c627bf6b1978c59a985"></a><!-- doxytag: member="itpp::TCP_Receiver::setup" ref="2d9c335981c19c627bf6b1978c59a985" args="()" -->
90virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Receiver.html#2d9c335981c19c627bf6b1978c59a985">setup</a> ()</td></tr>
91
92<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">ADD DOCUMENTATION HERE. <br></td></tr>
93<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0e3548264fc67ce63780944b8643de2b"></a><!-- doxytag: member="itpp::TCP_Receiver::release" ref="0e3548264fc67ce63780944b8643de2b" args="(std::string trace_filename=&quot;&quot;)" -->
94virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Receiver.html#0e3548264fc67ce63780944b8643de2b">release</a> (std::string trace_filename=&quot;&quot;)</td></tr>
95
96<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">ADD DOCUMENTATION HERE. <br></td></tr>
97<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f0755a2cd71399c37a5a2bf6a12dd42c"></a><!-- doxytag: member="itpp::TCP_Receiver::get_user_message" ref="f0755a2cd71399c37a5a2bf6a12dd42c" args="()" -->
98<a class="el" href="classitpp_1_1Packet.html">itpp::Packet</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Receiver.html#f0755a2cd71399c37a5a2bf6a12dd42c">get_user_message</a> ()</td></tr>
99
100<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">called by higher layer <br></td></tr>
101<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9a9df15130878acd5e75a97a3ee38ed7"></a><!-- doxytag: member="itpp::TCP_Receiver::is_user_message_available" ref="9a9df15130878acd5e75a97a3ee38ed7" args="()" -->
102bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Receiver.html#9a9df15130878acd5e75a97a3ee38ed7">is_user_message_available</a> ()</td></tr>
103
104<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">called by higher layer <br></td></tr>
105<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="dc5daf51ba36f4f3b9774b3694681ff3"></a><!-- doxytag: member="itpp::TCP_Receiver::set_debug" ref="dc5daf51ba36f4f3b9774b3694681ff3" args="(const bool enable_debug=true)" -->
106virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Receiver.html#dc5daf51ba36f4f3b9774b3694681ff3">set_debug</a> (const bool enable_debug=true)</td></tr>
107
108<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">ADD DOCUMENTATION HERE. <br></td></tr>
109<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="da0fd7840f5af0a01d4fff465d802094"></a><!-- doxytag: member="itpp::TCP_Receiver::set_debug" ref="da0fd7840f5af0a01d4fff465d802094" args="(bool enable_debug, bool enable_signal_debug)" -->
110virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Receiver.html#da0fd7840f5af0a01d4fff465d802094">set_debug</a> (bool enable_debug, bool enable_signal_debug)</td></tr>
111
112<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">ADD DOCUMENTATION HERE. <br></td></tr>
113<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d01c2d42ae98e3ea132f9c69a01a0de8"></a><!-- doxytag: member="itpp::TCP_Receiver::set_trace" ref="d01c2d42ae98e3ea132f9c69a01a0de8" args="(const bool enable_trace=true)" -->
114virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Receiver.html#d01c2d42ae98e3ea132f9c69a01a0de8">set_trace</a> (const bool enable_trace=true)</td></tr>
115
116<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">ADD DOCUMENTATION HERE. <br></td></tr>
117<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="805fabf64f55f705d7d119db95d204e8"></a><!-- doxytag: member="itpp::TCP_Receiver::save_trace" ref="805fabf64f55f705d7d119db95d204e8" args="(std::string filename)" -->
118virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Receiver.html#805fabf64f55f705d7d119db95d204e8">save_trace</a> (std::string filename)</td></tr>
119
120<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">ADD DOCUMENTATION HERE. <br></td></tr>
121<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
122<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2b440d09349a194f4bf943da9634f7c7"></a><!-- doxytag: member="itpp::TCP_Receiver::tcp_send_ack" ref="2b440d09349a194f4bf943da9634f7c7" args="" -->
123<a class="el" href="classitpp_1_1Signal.html">Signal</a>&lt; <a class="el" href="classitpp_1_1Packet.html">itpp::Packet</a> * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Receiver.html#2b440d09349a194f4bf943da9634f7c7">tcp_send_ack</a></td></tr>
124
125<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">ADD DOCUMENTATION HERE. <br></td></tr>
126<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5bf494bcd08ad86837e22f83877fb59a"></a><!-- doxytag: member="itpp::TCP_Receiver::tcp_receive" ref="5bf494bcd08ad86837e22f83877fb59a" args="" -->
127<a class="el" href="classitpp_1_1Slot.html">Slot</a>&lt; <a class="el" href="classitpp_1_1TCP__Receiver.html">TCP_Receiver</a>, <br class="typebreak">
128<a class="el" href="classitpp_1_1Packet.html">itpp::Packet</a> * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Receiver.html#5bf494bcd08ad86837e22f83877fb59a">tcp_receive</a></td></tr>
129
130<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">ADD DOCUMENTATION HERE. <br></td></tr>
131<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bbab0658b36792c135ed6c32e23ea40b"></a><!-- doxytag: member="itpp::TCP_Receiver::tcp_new_data" ref="bbab0658b36792c135ed6c32e23ea40b" args="" -->
132<a class="el" href="classitpp_1_1Signal.html">Signal</a>&lt; int &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Receiver.html#bbab0658b36792c135ed6c32e23ea40b">tcp_new_data</a></td></tr>
133
134<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">indicate new data to higher layer <br></td></tr>
135<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b7df00acd607d036b840461fb7a0ae05"></a><!-- doxytag: member="itpp::TCP_Receiver::tcp_release" ref="b7df00acd607d036b840461fb7a0ae05" args="" -->
136<a class="el" href="classitpp_1_1Slot.html">Slot</a>&lt; <a class="el" href="classitpp_1_1TCP__Receiver.html">TCP_Receiver</a>, std::string &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Receiver.html#b7df00acd607d036b840461fb7a0ae05">tcp_release</a></td></tr>
137
138<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">ADD DOCUMENTATION HERE. <br></td></tr>
139</table>
140<hr><a name="_details"></a><h2>Detailed Description</h2>
141The TCP receiver models the receiver side of a TCP connection. It is connected to the network via ports "input" and "ackoutput" and to an entity modelling higher layers (e.g. a sink) via port "output".<p>
142Incoming TCP messages are used to update the receiver buffer and as a trigger to send an <a class="el" href="classitpp_1_1ACK.html">ACK</a> message back to the TCP sender. If the "DelayedACK" option is used ACKs are only sent for every second packet (unless in the case of out of order packets). If the received packet is not out of order (i.e. the next expected sequence number in the byte stream has increased) new data is delivered to the higher layer. This delivery may be delayed in the receiver itself (user block processing delay) or by the subsequent entity if it blocks on incoming message indications.<p>
143A couple of parameters can be specified in the input file including delayed <a class="el" href="classitpp_1_1ACK.html">ACK</a> timer value and timer granularity. The value of MSS should be equal to the one specified at the receiver side although it is only required for delayed <a class="el" href="classitpp_1_1ACK.html">ACK</a> and receiver SWSA algorithms. <p>
144Like the TCP sender TTCPReceiver provides a simplified connection control via methods Setup and Release. Those methods are only used to reset internal state variables. No control messages are sent over the network, i.e. the receiver assumes that the corresponding methods at the sender side are called as well.<p>
145<dl class="see" compact><dt><b>See also:</b></dt><dd>TTCPReceiverSet <p>
146TTCPReceiverBuffer <p>
147<a class="el" href="classitpp_1_1TCP__Sender.html">TCP_Sender</a> </dd></dl>
148<dl class="author" compact><dt><b>Author:</b></dt><dd>Grevent <p>
149Lorang <p>
150Bodamer </dd></dl>
151<hr>The documentation for this class was generated from the following file:<ul>
152<li><a class="el" href="tcp_8h-source.html">tcp.h</a></ul>
153</div>
154<hr size="1"><address style="text-align: right;"><small>Generated on Tue Jun 2 10:02:19 2009 for mixpp by&nbsp;
155<a href="http://www.doxygen.org/index.html">
156<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
157</body>
158</html>
Note: See TracBrowser for help on using the browser.