root/doc/html/classitpp_1_1TCP__Sender.html @ 353

Revision 353, 12.8 kB (checked in by smidl, 15 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_Sender 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__Sender.html">TCP_Sender</a>
68  </div>
69</div>
70<div class="contents">
71<h1>itpp::TCP_Sender Class Reference<br>
72<small>
73[<a class="el" href="group__protocol.html">Protocols Module</a>]</small>
74</h1><!-- doxytag: class="itpp::TCP_Sender" --><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__Sender-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="1efb7fa4a28bcb306c828a0bccc1ee2e"></a><!-- doxytag: member="itpp::TCP_Sender::TCP_Sender" ref="1efb7fa4a28bcb306c828a0bccc1ee2e" args="(int label)" -->
82&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Sender.html#1efb7fa4a28bcb306c828a0bccc1ee2e">TCP_Sender</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="978a2f60b478d41f382af74dd2a9c8bd"></a><!-- doxytag: member="itpp::TCP_Sender::~TCP_Sender" ref="978a2f60b478d41f382af74dd2a9c8bd" args="()" -->
86virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Sender.html#978a2f60b478d41f382af74dd2a9c8bd">~TCP_Sender</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="b2149c496426d2b72b00956bb1d3cfbb"></a><!-- doxytag: member="itpp::TCP_Sender::setup" ref="b2149c496426d2b72b00956bb1d3cfbb" args="()" -->
90virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Sender.html#b2149c496426d2b72b00956bb1d3cfbb">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="2cd17485375e55996c8e4c617c67dcb1"></a><!-- doxytag: member="itpp::TCP_Sender::release" ref="2cd17485375e55996c8e4c617c67dcb1" args="(std::string trace_filename=&quot;&quot;)" -->
94virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Sender.html#2cd17485375e55996c8e4c617c67dcb1">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="d1bcc3e0c49093f08994452246e73fd4"></a><!-- doxytag: member="itpp::TCP_Sender::print_item" ref="d1bcc3e0c49093f08994452246e73fd4" args="(std::ostream &amp;, const std::string &amp;)" -->
98virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Sender.html#d1bcc3e0c49093f08994452246e73fd4">print_item</a> (std::ostream &amp;, const std::string &amp;)</td></tr>
99
100<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Print support. <br></td></tr>
101<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c51165b900333fd243b453ae86984c3b"></a><!-- doxytag: member="itpp::TCP_Sender::set_debug" ref="c51165b900333fd243b453ae86984c3b" args="(const bool enable_debug=true)" -->
102virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Sender.html#c51165b900333fd243b453ae86984c3b">set_debug</a> (const bool enable_debug=true)</td></tr>
103
104<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">ADD DOCUMENTATION HERE. <br></td></tr>
105<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0d35bc809e5243ea42bded97b9bae7a"></a><!-- doxytag: member="itpp::TCP_Sender::set_debug" ref="a0d35bc809e5243ea42bded97b9bae7a" args="(bool enable_debug, bool enable_signal_debug)" -->
106virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Sender.html#a0d35bc809e5243ea42bded97b9bae7a">set_debug</a> (bool enable_debug, bool enable_signal_debug)</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="1f5a13675928a288ce736363ce9bdf2c"></a><!-- doxytag: member="itpp::TCP_Sender::set_trace" ref="1f5a13675928a288ce736363ce9bdf2c" args="(const bool enable_trace=true)" -->
110virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Sender.html#1f5a13675928a288ce736363ce9bdf2c">set_trace</a> (const bool enable_trace=true)</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="dfd8ed5e8e46cf481d99784a03538d63"></a><!-- doxytag: member="itpp::TCP_Sender::save_trace" ref="dfd8ed5e8e46cf481d99784a03538d63" args="(std::string filename)" -->
114virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Sender.html#dfd8ed5e8e46cf481d99784a03538d63">save_trace</a> (std::string filename)</td></tr>
115
116<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">ADD DOCUMENTATION HERE. <br></td></tr>
117<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
118<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c78143630d62c965192299a86893f92c"></a><!-- doxytag: member="itpp::TCP_Sender::tcp_send" ref="c78143630d62c965192299a86893f92c" args="" -->
119<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__Sender.html#c78143630d62c965192299a86893f92c">tcp_send</a></td></tr>
120
121<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">ADD DOCUMENTATION HERE. <br></td></tr>
122<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4ee84caca57541e168259a09d6be5a3a"></a><!-- doxytag: member="itpp::TCP_Sender::tcp_receive_ack" ref="4ee84caca57541e168259a09d6be5a3a" args="" -->
123<a class="el" href="classitpp_1_1Slot.html">Slot</a>&lt; <a class="el" href="classitpp_1_1TCP__Sender.html">TCP_Sender</a>, <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__Sender.html#4ee84caca57541e168259a09d6be5a3a">tcp_receive_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="8ea6b37f1515de6ad3de75095cd8a781"></a><!-- doxytag: member="itpp::TCP_Sender::tcp_socket_write" ref="8ea6b37f1515de6ad3de75095cd8a781" args="" -->
127<a class="el" href="classitpp_1_1Slot.html">Slot</a>&lt; <a class="el" href="classitpp_1_1TCP__Sender.html">TCP_Sender</a>, <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__Sender.html#8ea6b37f1515de6ad3de75095cd8a781">tcp_socket_write</a></td></tr>
128
129<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">ADD DOCUMENTATION HERE. <br></td></tr>
130<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4873bed02d114fa31df7384152a7f1a5"></a><!-- doxytag: member="itpp::TCP_Sender::tcp_release" ref="4873bed02d114fa31df7384152a7f1a5" args="" -->
131<a class="el" href="classitpp_1_1Slot.html">Slot</a>&lt; <a class="el" href="classitpp_1_1TCP__Sender.html">TCP_Sender</a>, std::string &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1TCP__Sender.html#4873bed02d114fa31df7384152a7f1a5">tcp_release</a></td></tr>
132
133<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">ADD DOCUMENTATION HERE. <br></td></tr>
134</table>
135<hr><a name="_details"></a><h2>Detailed Description</h2>
136TTCPSender is an entity that models TCP flow and congestion control at the sender side. It is one of the key components of the TCP module.<p>
137TTCPSender communicates with its environment via three ports: <p>
138<ul>
139<li>
140"input": receive messages from a generator/application </li>
141<li>
142"output": send TCP packets into the network </li>
143<li>
144"ackinput": receive TCP <a class="el" href="classitpp_1_1ACK.html">ACK</a> packets from the network originated by the TCP receiver </li>
145</ul>
146<p>
147The sender is activated when the user entity (e.g. a generator) offers a message, whose length indicates the amount of data to be transferred, or when an <a class="el" href="classitpp_1_1ACK.html">ACK</a> is received from the network. In both cases data is only sent if there is any unsent data available, the sending window (determined by the congestion window and by the receiver advertised window) is large enough and the silly window syndrome avoidance algorithm is passed. Data that has been sent remains in the sender buffer, which is modelled in a virtual manner, until it is acknowledged. If data has been ACKed it is erased in the sender buffer and the TCP sender tries to get new data and send it.<p>
148TTCPSender can be used with different versions of congestion control: Tahoe, Reno, and New Reno. Moreover, various options (e.g. usage of Nagle/Karn/Go-Back-N algorithms) and parameters (e.g. mss, max cwnd, initial values, timer granularity) can be defined in the input file.<p>
149The class 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 sender assumes that the corresponding methods at the receiver side are called as well.<p>
150<dl class="see" compact><dt><b>See also:</b></dt><dd>TTCPSenderSet <p>
151TTCPReceiver </dd></dl>
152<dl class="author" compact><dt><b>Author:</b></dt><dd>Grevent <p>
153Lorang <p>
154Bodamer </dd></dl>
155<hr>The documentation for this class was generated from the following file:<ul>
156<li><a class="el" href="tcp_8h-source.html">tcp.h</a></ul>
157</div>
158<hr size="1"><address style="text-align: right;"><small>Generated on Tue Jun 2 10:02:19 2009 for mixpp by&nbsp;
159<a href="http://www.doxygen.org/index.html">
160<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
161</body>
162</html>
Note: See TracBrowser for help on using the browser.