author | Gustavo J. A. M. Carneiro <gjc@inescporto.pt> |
Fri, 11 Jul 2008 19:32:22 +0100 | |
changeset 3417 | 06df0787254b |
parent 3400 | fd69b15002ee |
permissions | -rw-r--r-- |
3400
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
1 |
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
2 |
/* |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
3 |
* Copyright 2007 University of Washington |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
4 |
* Copyright 2007 Georgia Tech Research Corporation |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
5 |
* Copyright 2008 Sandia Corporation |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
6 |
* |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
7 |
* This program is free software; you can redistribute it and/or modify |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
8 |
* it under the terms of the GNU General Public License version 2 as |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
9 |
* published by the Free Software Foundation; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
10 |
* |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
11 |
* This program is distributed in the hope that it will be useful, |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
12 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
13 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
14 |
* GNU General Public License for more details. |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
15 |
* |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
16 |
* You should have received a copy of the GNU General Public License |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
17 |
* along with this program; if not, write to the Free Software |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
18 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
19 |
* |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
20 |
* |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
21 |
* Sandia is a multiprogram laboratory operated by Sandia |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
22 |
* Corporation, a Lockheed Martin Company, for the United States |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
23 |
* Department of Energy's National Nuclear Security Administration |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
24 |
* under Contract DE-AC04-94AL85000. |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
25 |
* |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
26 |
* Author: David Evensky, Sandia National Labs |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
27 |
* |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
28 |
* includes GPL'ed ns-3-dev code from: |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
29 |
* udp-echo, // ??, (c) U. Wash. 2007 |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
30 |
* tcp-large-transfer // ?? |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
31 |
* packet-sink // Tom Henderson, (c) U. Wash. 2007 |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
32 |
* onoff // George F. Riley, (c) GT Res Corp. 2007 |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
33 |
*/ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
34 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
35 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
36 |
/* NOTE |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
37 |
This isn't really an example file, so don't look to closely at it as a starting |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
38 |
script. It is here for validation of the TCP model. |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
39 |
*/ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
40 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
41 |
#include <iostream> |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
42 |
#include <fstream> |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
43 |
#include <sstream> |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
44 |
#include <string> |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
45 |
#include <iomanip> |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
46 |
#include <map> |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
47 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
48 |
#include "ns3/core-module.h" |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
49 |
#include "ns3/helper-module.h" |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
50 |
#include "ns3/node-module.h" |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
51 |
#include "ns3/global-route-manager.h" |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
52 |
#include "ns3/simulator-module.h" |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
53 |
#include "ns3/log.h" |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
54 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
55 |
using namespace ns3; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
56 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
57 |
NS_LOG_COMPONENT_DEFINE ("tcp-2way"); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
58 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
59 |
//----------defines------------------------------------------------------------- |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
60 |
//define to print more debugging info. |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
61 |
#define VERBOSE_TESTING |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
62 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
63 |
/* define to die because Socket::Recv() is told to |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
64 |
* only read an "undesired" number of bytes |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
65 |
* fails NS_ASSERT in HandleRead because rx_addr_tag |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
66 |
* tag isn't there. |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
67 |
*/ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
68 |
//#define TOO_SMALL_BUG |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
69 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
70 |
//define to print this pointer in NS_LOG_FUNCTION |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
71 |
//#define PRINT_THIS |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
72 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
73 |
/*define to print packet info in HandleRead |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
74 |
*expected output is of the form: |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
75 |
*536:P{536} *bytes from 10.1.0.2 [02-06-0a:01:00:02:20:00] <0|536|884018> |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
76 |
* ^ ^ ^ ^ ^ ^ ^ ^ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
77 |
* | | | | | | | | |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
78 |
* | | | | | | | +bytes left |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
79 |
* | | | | | | | to read in |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
80 |
* | | | | | | | sent buffer |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
81 |
* | | | | | | +bytes read in |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
82 |
* | | | | | | this packet if |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
83 |
* | | | | | | header read, |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
84 |
* | | | | | | prints size |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
85 |
* | | | | | | in () |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
86 |
* | | | | | +bytes cur. packet |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
87 |
* | | | | | left to process |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
88 |
* | | | | +mac addr of sender |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
89 |
* | | | +IP addr of sender |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
90 |
* | | +print '*' while processing first chunk in a received packet. |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
91 |
* | | if there are multiple small sent packets, these can appear in |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
92 |
* | | a single packet, and are processed by a do {} while() loop. |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
93 |
* | +rle output of packet::PeekData(), in this case filled with 536 bytes |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
94 |
* | filled with the letter 'P' (brought to you by the letter 'Q' and the |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
95 |
* | number '9' :-)) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
96 |
* + packet::GetSize() |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
97 |
* |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
98 |
* If there is a header it will look more like: |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
99 |
* 536:N{317}@B.{6}HELLOP{206} *bytes from 10.1.0.2 [02-06-0a:01:00:02:20:00]\ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
100 |
* <219|317|0> |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
101 |
* 536:N{317}@B.{6}HELLOP{206} bytes from 10.1.0.2 [02-06-0a:01:00:02:20:00]\ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
102 |
* <0|206(13)|999794> (ArchHeader=HELLO:1000000) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
103 |
* where you can see that this first packet includes 317 bytes from the |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
104 |
* previous send packet (filled with N) and 13 bytes of header before the 206 |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
105 |
* bytes of payload (filled with P). |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
106 |
*/ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
107 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
108 |
#define RECV_PRINT |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
109 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
110 |
// dcl non-method functions.... |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
111 |
std::string rle(const uint8_t *, int ); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
112 |
std::ofstream fileOut("tcp-2way.out"); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
113 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
114 |
//----------class ArchHeader dcl and definition--------------------------------- |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
115 |
/* |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
116 |
* ArchHeader: A toy header that holds a string |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
117 |
* and a uint32_t. The string is an abitrary label |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
118 |
* and the int is used as the length of the payload. |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
119 |
*/ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
120 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
121 |
class ArchHeader : public Header { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
122 |
public: |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
123 |
virtual uint32_t GetSerializedSize (void) const; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
124 |
virtual void Serialize (Buffer::Iterator) const; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
125 |
virtual uint32_t Deserialize (Buffer::Iterator); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
126 |
virtual void Print (std::ostream &) const; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
127 |
static TypeId GetTypeId (void); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
128 |
virtual TypeId GetInstanceTypeId (void) const; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
129 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
130 |
// accessor functions..... |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
131 |
void SetIntValue (uint32_t); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
132 |
uint32_t GetIntValue (void) const; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
133 |
void SetStrValue (const std::string &s); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
134 |
std::string GetStrValue (void) const; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
135 |
private: |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
136 |
uint32_t int_value; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
137 |
std::string str_value; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
138 |
}; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
139 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
140 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
141 |
TypeId |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
142 |
ArchHeader::GetTypeId (void) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
143 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
144 |
static TypeId tid = TypeId ("ns3::ArchHeader") |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
145 |
.AddConstructor<ArchHeader> () // NOTE: Required for ???? |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
146 |
.SetParent<Header> () // ditto |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
147 |
; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
148 |
return tid; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
149 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
150 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
151 |
TypeId |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
152 |
ArchHeader::GetInstanceTypeId (void) const |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
153 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
154 |
return GetTypeId (); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
155 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
156 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
157 |
uint32_t |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
158 |
ArchHeader::GetSerializedSize (void) const |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
159 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
160 |
return 2*sizeof (uint32_t) + str_value.size (); // int, str len & bytes |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
161 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
162 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
163 |
void |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
164 |
ArchHeader::Serialize (Buffer::Iterator i) const |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
165 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
166 |
i.WriteU32 (int_value); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
167 |
uint32_t str_len = str_value.size (); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
168 |
i.WriteU32 (str_len); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
169 |
for (uint32_t j = 0; j < str_value.size (); j++) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
170 |
i.WriteU8 (str_value[j]); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
171 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
172 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
173 |
uint32_t |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
174 |
ArchHeader::Deserialize (Buffer::Iterator i) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
175 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
176 |
int_value = i.ReadU32 (); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
177 |
uint32_t str_len = i.ReadU32 (); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
178 |
str_value.reserve (str_len); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
179 |
for (uint32_t j = 0; j < str_len; j++) { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
180 |
char v = i.ReadU8 (); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
181 |
str_value.push_back (v); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
182 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
183 |
return 2*sizeof (uint32_t) + str_value.size (); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
184 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
185 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
186 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
187 |
void |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
188 |
ArchHeader::SetIntValue (uint32_t v_) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
189 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
190 |
int_value = v_; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
191 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
192 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
193 |
uint32_t |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
194 |
ArchHeader::GetIntValue (void) const |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
195 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
196 |
return int_value; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
197 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
198 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
199 |
void |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
200 |
ArchHeader::SetStrValue (const std::string &s) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
201 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
202 |
str_value = s; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
203 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
204 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
205 |
std::string |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
206 |
ArchHeader::GetStrValue (void) const |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
207 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
208 |
return str_value; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
209 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
210 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
211 |
void |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
212 |
ArchHeader::Print (std::ostream &os) const |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
213 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
214 |
os << "(ArchHeader=" << str_value << ":" << int_value << ")"; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
215 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
216 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
217 |
//----------class TalkerApp dcl and definition---------------------------------- |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
218 |
/* |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
219 |
* TalkerApp: |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
220 |
* An an Application that can serve as both Rx and Tx side. |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
221 |
* and is configured by ConfRecv/ConfSend and driven by |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
222 |
* ScheduleSendPacket. Becareful not to try to send a packet |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
223 |
* from the Rx side to the Tx side (back channel) before the |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
224 |
* connection is setup, which has to be from the Tx to the Rx |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
225 |
* (the forward channel). |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
226 |
*/ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
227 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
228 |
class TalkerApp : public Application { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
229 |
public: |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
230 |
TalkerApp (); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
231 |
virtual ~TalkerApp (); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
232 |
void ConfRecv (Ptr<Node>,const Address &); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
233 |
void ConfSend (Ptr<Node>,const Address &); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
234 |
void ScheduleSendPacket(const Time ,const char , const uint32_t size ); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
235 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
236 |
protected: |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
237 |
virtual void DoDispose (void); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
238 |
private: |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
239 |
virtual void StartApplication (void); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
240 |
virtual void StopApplication (void); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
241 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
242 |
void StartApplicationRecv (void); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
243 |
void StartApplicationSend (void); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
244 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
245 |
void HandleRead (Ptr<Socket>); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
246 |
void SendPacket (std::string,char,uint32_t); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
247 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
248 |
void CloseConnection (Ptr<Socket> socket); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
249 |
void ConnectionSucceeded (Ptr<Socket>); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
250 |
void ConnectionFailed (Ptr<Socket>); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
251 |
bool ConnectionRequested (Ptr<Socket>, const Address &); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
252 |
void ConnectionCreated (Ptr<Socket>, const Address &); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
253 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
254 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
255 |
bool verbose; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
256 |
Ptr<Socket> m_socket; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
257 |
Ptr<Socket> m_servsocket; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
258 |
Address m_local; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
259 |
Address m_remote; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
260 |
int i_am_listener; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
261 |
typedef std::map<Ptr<Socket>, uint32_t>::iterator left_to_read_iterator_type; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
262 |
std::map<Ptr<Socket>, uint32_t> m_left_to_read; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
263 |
}; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
264 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
265 |
class TalkerApp_sub : public TalkerApp { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
266 |
public: |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
267 |
int foo(void); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
268 |
}; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
269 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
270 |
int |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
271 |
TalkerApp_sub::foo(void) {return 0;} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
272 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
273 |
TalkerApp::TalkerApp () : |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
274 |
verbose (false), |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
275 |
m_socket (0), |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
276 |
m_servsocket (0), |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
277 |
i_am_listener (0) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
278 |
{} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
279 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
280 |
TalkerApp::~TalkerApp () |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
281 |
{} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
282 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
283 |
void |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
284 |
TalkerApp::DoDispose (void) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
285 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
286 |
m_socket = 0; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
287 |
m_servsocket = 0; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
288 |
Application::DoDispose (); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
289 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
290 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
291 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
292 |
void |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
293 |
TalkerApp::CloseConnection (Ptr<Socket> sock) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
294 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
295 |
NS_LOG_FUNCTION ((i_am_listener ? "Server|" : "Client|") |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
296 |
#ifdef PRINT_THIS |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
297 |
<< this |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
298 |
#endif |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
299 |
<< sock |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
300 |
); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
301 |
sock->Close (); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
302 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
303 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
304 |
void |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
305 |
TalkerApp::ConnectionSucceeded (Ptr<Socket> sock) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
306 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
307 |
NS_LOG_FUNCTION ((i_am_listener ? "Server|" : "Client|") |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
308 |
#ifdef PRINT_THIS |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
309 |
<< this |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
310 |
#endif |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
311 |
<< sock |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
312 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
313 |
); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
314 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
315 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
316 |
void |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
317 |
TalkerApp::ConnectionFailed (Ptr<Socket> sock) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
318 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
319 |
NS_LOG_FUNCTION ((i_am_listener ? "Server|" : "Client|") |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
320 |
#ifdef PRINT_THIS |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
321 |
<< this |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
322 |
#endif |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
323 |
<< sock |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
324 |
); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
325 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
326 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
327 |
bool |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
328 |
TalkerApp::ConnectionRequested (Ptr<Socket> sock, const Address &addr) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
329 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
330 |
NS_LOG_FUNCTION ((i_am_listener ? "Server|" : "Client|") |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
331 |
#ifdef PRINT_THIS |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
332 |
<< this |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
333 |
#endif |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
334 |
<< sock |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
335 |
<< addr |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
336 |
); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
337 |
return true; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
338 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
339 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
340 |
void |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
341 |
TalkerApp::ConnectionCreated (Ptr<Socket> sock, const Address &addr) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
342 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
343 |
NS_LOG_FUNCTION ((i_am_listener ? "Server|" : "Client|") |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
344 |
#ifdef PRINT_THIS |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
345 |
<< this |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
346 |
#endif |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
347 |
<< sock |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
348 |
<< addr |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
349 |
); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
350 |
m_socket = sock; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
351 |
m_socket->SetRecvCallback(MakeCallback (&TalkerApp::HandleRead, this)); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
352 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
353 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
354 |
void |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
355 |
TalkerApp::ScheduleSendPacket (const Time dt,const char fill, |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
356 |
const uint32_t size) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
357 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
358 |
NS_LOG_FUNCTION ((i_am_listener ? "Server|" : "Client|") |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
359 |
#ifdef PRINT_THIS |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
360 |
<< this |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
361 |
#endif |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
362 |
<< dt |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
363 |
<< fill |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
364 |
<< size |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
365 |
); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
366 |
Simulator::Schedule(dt,&TalkerApp::SendPacket, this, |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
367 |
std::string("HELLO"),fill,size); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
368 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
369 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
370 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
371 |
void |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
372 |
TalkerApp::StartApplication () |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
373 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
374 |
NS_LOG_FUNCTION ((i_am_listener ? "Server|" : "Client|") |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
375 |
#ifdef PRINT_THIS |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
376 |
<< this |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
377 |
#endif |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
378 |
); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
379 |
if (i_am_listener) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
380 |
StartApplicationRecv (); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
381 |
else |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
382 |
StartApplicationSend (); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
383 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
384 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
385 |
void |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
386 |
TalkerApp::StartApplicationSend () |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
387 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
388 |
NS_LOG_FUNCTION ((i_am_listener ? "Server|" : "Client|") |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
389 |
#ifdef PRINT_THIS |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
390 |
<< this |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
391 |
#endif |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
392 |
); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
393 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
394 |
if (!m_socket) { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
395 |
m_socket = Socket::CreateSocket (GetNode (), |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
396 |
TcpSocketFactory::GetTypeId ()); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
397 |
m_socket->Bind (); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
398 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
399 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
400 |
m_socket->Connect (m_remote); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
401 |
m_socket->SetConnectCallback |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
402 |
( |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
403 |
MakeCallback (&TalkerApp::ConnectionSucceeded,this), |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
404 |
MakeCallback (&TalkerApp::ConnectionFailed,this) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
405 |
); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
406 |
m_socket->SetRecvCallback (MakeCallback (&TalkerApp::HandleRead, this)); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
407 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
408 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
409 |
void |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
410 |
TalkerApp::StartApplicationRecv () |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
411 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
412 |
NS_LOG_FUNCTION ((i_am_listener ? "Server|" : "Client|") |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
413 |
#ifdef PRINT_THIS |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
414 |
<< this |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
415 |
#endif |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
416 |
); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
417 |
if (!m_servsocket) { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
418 |
m_servsocket = Socket::CreateSocket (GetNode (), |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
419 |
TcpSocketFactory::GetTypeId ()); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
420 |
m_servsocket->Bind (m_local); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
421 |
m_servsocket->Listen (0); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
422 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
423 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
424 |
m_servsocket->SetAcceptCallback |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
425 |
( |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
426 |
MakeCallback (&TalkerApp::ConnectionRequested,this), |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
427 |
MakeCallback (&TalkerApp::ConnectionCreated,this) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
428 |
); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
429 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
430 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
431 |
void |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
432 |
TalkerApp::ConfRecv (Ptr<Node> node, const Address &addr) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
433 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
434 |
i_am_listener = 1; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
435 |
NS_LOG_FUNCTION ((i_am_listener ? "Server|" : "Client|") |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
436 |
#ifdef PRINT_THIS |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
437 |
<< this |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
438 |
#endif |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
439 |
<< node |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
440 |
<< addr |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
441 |
); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
442 |
m_local = addr; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
443 |
node->AddApplication (this); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
444 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
445 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
446 |
void |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
447 |
TalkerApp::ConfSend (Ptr<Node> node, const Address &addr) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
448 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
449 |
i_am_listener = 0; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
450 |
NS_LOG_FUNCTION ((i_am_listener ? "Server|" : "Client|") |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
451 |
#ifdef PRINT_THIS |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
452 |
<< this |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
453 |
#endif |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
454 |
<< node |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
455 |
<< addr |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
456 |
); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
457 |
m_remote = addr; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
458 |
node->AddApplication (this); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
459 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
460 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
461 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
462 |
void |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
463 |
TalkerApp::SendPacket (std::string label,char fill,uint32_t payloadsize) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
464 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
465 |
NS_LOG_FUNCTION ((i_am_listener ? "Server|" : "Client|") |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
466 |
#ifdef PRINT_THIS |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
467 |
<< this |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
468 |
#endif |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
469 |
<< label |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
470 |
<< fill |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
471 |
<< payloadsize |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
472 |
); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
473 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
474 |
#if 0 |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
475 |
Ptr<Packet> p = Create<Packet> (payloadsize); // zero byte filled packet. |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
476 |
#else |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
477 |
uint8_t *buf = (uint8_t *) malloc(payloadsize*sizeof(uint8_t)); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
478 |
memset(buf,fill,payloadsize); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
479 |
Ptr<Packet> p = Create<Packet> (buf,payloadsize); // filled packet. |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
480 |
free(buf); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
481 |
#endif |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
482 |
if (verbose) { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
483 |
p->Print (fileOut << "Before Marking|"); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
484 |
fileOut << std::endl; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
485 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
486 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
487 |
ArchHeader hdr; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
488 |
hdr.SetStrValue (label); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
489 |
hdr.SetIntValue (p->GetSize()); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
490 |
p->AddHeader (hdr); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
491 |
if (verbose) { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
492 |
p->Print(fileOut << "After Header Marking|"); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
493 |
fileOut << std::endl; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
494 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
495 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
496 |
m_socket->Send (p); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
497 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
498 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
499 |
void |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
500 |
TalkerApp::StopApplication () |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
501 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
502 |
NS_LOG_FUNCTION ((i_am_listener ? "Server|" : "Client|") |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
503 |
#ifdef PRINT_THIS |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
504 |
<< this |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
505 |
#endif |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
506 |
); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
507 |
if (m_socket) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
508 |
m_socket->SetRecvCallback (MakeNullCallback<void, Ptr<Socket> > ()); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
509 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
510 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
511 |
void |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
512 |
TalkerApp::HandleRead (Ptr<Socket> socket) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
513 |
{ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
514 |
left_to_read_iterator_type iter = m_left_to_read.find (socket); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
515 |
if (iter == m_left_to_read.end ()) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
516 |
m_left_to_read[socket] = 0; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
517 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
518 |
std::ostringstream pretty; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
519 |
pretty << (i_am_listener ? "Server" : "Client") |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
520 |
<< (iter == m_left_to_read.end () ? |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
521 |
"(new)" : "(old)") |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
522 |
<< "|"; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
523 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
524 |
NS_LOG_FUNCTION ( pretty.str () |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
525 |
#ifdef PRINT_THIS |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
526 |
<< this |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
527 |
#endif |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
528 |
<< socket |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
529 |
); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
530 |
/* |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
531 |
* NOTE: I can crash with the # bytes == 500 rather than 536 |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
532 |
* which seems to be the default MTU |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
533 |
*/ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
534 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
535 |
#ifdef TOO_SMALL_BUG |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
536 |
const uint32_t number_of_bytes_willing_to_read = 500; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
537 |
#else |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
538 |
const uint32_t number_of_bytes_willing_to_read = 536; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
539 |
#endif |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
540 |
const uint32_t unused_flags = 0; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
541 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
542 |
Ptr<Packet> packet; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
543 |
while (packet = socket->Recv (number_of_bytes_willing_to_read, |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
544 |
unused_flags) ){ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
545 |
std::string raw_rle = rle(packet->PeekData(), |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
546 |
packet->GetSize()); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
547 |
SocketAddressTag rx_addr_tag; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
548 |
bool found; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
549 |
found = packet->FindFirstMatchingTag (rx_addr_tag); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
550 |
NS_ASSERT (found); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
551 |
Address from = rx_addr_tag.GetAddress (); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
552 |
// XXX packet->RemoveTag (tag); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
553 |
if (InetSocketAddress::IsMatchingType (from)) { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
554 |
InetSocketAddress address = InetSocketAddress::ConvertFrom (from); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
555 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
556 |
#ifdef VERBOSE_TESTING |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
557 |
packet->Print (fileOut << "Packet Dump: "); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
558 |
fileOut << std::endl; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
559 |
#endif |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
560 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
561 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
562 |
bool freshly_in_the_loop = true; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
563 |
do { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
564 |
#if defined(RECV_PRINT) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
565 |
fileOut |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
566 |
<< raw_rle // <length>:<rle of packet->PeekBuffer> |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
567 |
<< (freshly_in_the_loop ? " *" : " ") /* used to see if the do while |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
568 |
* does anything */ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
569 |
<< "bytes from " |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
570 |
<< address.GetIpv4 () << " [" << address << "] "; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
571 |
#endif |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
572 |
freshly_in_the_loop = false; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
573 |
int header_bytes = 0; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
574 |
ArchHeader* hdr = 0; // sadly, can't be a Ptr<> |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
575 |
if ( |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
576 |
(m_left_to_read[socket] == 0) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
577 |
) { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
578 |
hdr = new ArchHeader; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
579 |
if (packet->RemoveHeader (*hdr)) { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
580 |
m_left_to_read[socket] = hdr->GetIntValue (); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
581 |
header_bytes = hdr->GetSerializedSize (); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
582 |
} else { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
583 |
; // never get here, ns3 dumps if no header is there. |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
584 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
585 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
586 |
uint32_t num_bytes_processed = 0; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
587 |
if (m_left_to_read[socket] <= packet->GetSize ()) { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
588 |
packet->RemoveAtStart (m_left_to_read[socket]); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
589 |
num_bytes_processed = m_left_to_read[socket]; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
590 |
m_left_to_read[socket] = 0; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
591 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
592 |
} else { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
593 |
m_left_to_read[socket] -= packet->GetSize (); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
594 |
num_bytes_processed = packet->GetSize (); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
595 |
packet->RemoveAtStart (packet->GetSize ()); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
596 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
597 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
598 |
#if defined(RECV_PRINT) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
599 |
fileOut |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
600 |
<< "<" |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
601 |
<< packet->GetSize () |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
602 |
<< "|" |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
603 |
<< num_bytes_processed |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
604 |
; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
605 |
if (header_bytes) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
606 |
fileOut |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
607 |
<< "(" |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
608 |
<< header_bytes |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
609 |
<< ")" |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
610 |
; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
611 |
fileOut |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
612 |
<< "|" |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
613 |
<< m_left_to_read[socket] |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
614 |
<< ">"; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
615 |
#ifdef VERBOSE_TESTING |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
616 |
if (hdr) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
617 |
hdr->Print(fileOut << " "); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
618 |
#endif |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
619 |
fileOut << std::endl; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
620 |
#endif |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
621 |
if (hdr) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
622 |
delete hdr; // free what we new.... |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
623 |
} while ( |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
624 |
packet->GetSize () |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
625 |
); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
626 |
} else { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
627 |
fileOut << "not a match in HandleRead" << std::endl; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
628 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
629 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
630 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
631 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
632 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
633 |
//---------------Non-member functions------------------------------------------- |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
634 |
/* |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
635 |
* returns a string containing the length of the buffer, |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
636 |
* followed by an run length encoded version of the buffer |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
637 |
* un-printables are represented by '.' (i.e. special_marker |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
638 |
* const). |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
639 |
*/ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
640 |
std::string rle(const uint8_t *buf, int buflen) { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
641 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
642 |
int justify = 5; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
643 |
std::ostringstream o; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
644 |
const uint8_t min_rep = 3; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
645 |
uint8_t cur_char = 0; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
646 |
const uint8_t special_marker = '.'; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
647 |
int cur_cnt = 0; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
648 |
if (justify) { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
649 |
o << std::setw(justify) << std::right << buflen << ":"; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
650 |
} else { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
651 |
o << buflen << ":"; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
652 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
653 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
654 |
for (int i = 0; i < buflen; i++) { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
655 |
if ( |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
656 |
(!isprint(buf[i]) && cur_char == special_marker) || |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
657 |
(buf[i] == cur_char) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
658 |
) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
659 |
cur_cnt++; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
660 |
else { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
661 |
if (cur_cnt >= min_rep) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
662 |
o << (isprint(cur_char) ? static_cast<char>(cur_char) : '.') << "{" |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
663 |
<< cur_cnt << "}"; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
664 |
else |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
665 |
for (int irep=0; irep < cur_cnt; irep++) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
666 |
o << (isprint(cur_char) ? static_cast<char>(cur_char) : '.'); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
667 |
if (isprint(buf[i])) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
668 |
cur_char = buf[i]; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
669 |
else |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
670 |
cur_char = special_marker; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
671 |
cur_cnt = 1; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
672 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
673 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
674 |
if (cur_cnt >= min_rep) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
675 |
o << (isprint(cur_char) ? static_cast<char>(cur_char) : '.') << "{" |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
676 |
<< cur_cnt << "}"; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
677 |
else |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
678 |
for (int irep=0; irep < cur_cnt; irep++) |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
679 |
o << (isprint(cur_char) ? static_cast<char>(cur_char) : '.'); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
680 |
return o.str(); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
681 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
682 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
683 |
//---------------Main----------------------------------------------------------- |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
684 |
int |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
685 |
main (int argc, char *argv[]) { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
686 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
687 |
std::clog.rdbuf (fileOut.rdbuf ()); /* till we can do this in ns3::log |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
688 |
* without this ns3 logging messages |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
689 |
* are far away from normal output |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
690 |
*/ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
691 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
692 |
#ifdef VERBOSE_TESTING |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
693 |
LogComponentEnable ("tcp-2way",LOG_LEVEL_ALL); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
694 |
#endif |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
695 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
696 |
RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
697 |
Packet::EnableMetadata (); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
698 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
699 |
// boilerplate: "c0[0]" is Tx, "c0[1]" is Rx. |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
700 |
NodeContainer c0; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
701 |
c0.Create (2); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
702 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
703 |
// We create the channels first without any IP addressing information |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
704 |
PointToPointHelper p2p; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
705 |
p2p.SetDeviceAttribute ("DataRate",DataRateValue (DataRate (10000000))); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
706 |
p2p.SetChannelAttribute ("Delay",TimeValue (MilliSeconds (10))); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
707 |
NetDeviceContainer dev0 = p2p.Install (c0); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
708 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
709 |
// add ip/tcp stack to nodes. |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
710 |
InternetStackHelper internet; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
711 |
internet.Install (c0); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
712 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
713 |
// Later, we add IP addresses. |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
714 |
Ipv4AddressHelper ipv4; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
715 |
ipv4.SetBase ("10.1.0.0", "255.255.255.0"); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
716 |
Ipv4InterfaceContainer ifaces = ipv4.Assign (dev0); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
717 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
718 |
// Configure the apps. |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
719 |
uint16_t servPort = 32; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
720 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
721 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
722 |
// setup Rx side using ns3::Node "c0[1]" to listen for ANY:servPort |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
723 |
Ptr<TalkerApp> sink = CreateObject<TalkerApp_sub>(); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
724 |
sink->ConfRecv (c0.Get (1), |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
725 |
InetSocketAddress (Ipv4Address::GetAny (), servPort)); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
726 |
sink->Start (Seconds (0.0)); // somehow we get by without a Stop. bad form? |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
727 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
728 |
// setup Tx side using ns3::Node "c0[0]" to talk to "c0[1]":servPort |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
729 |
Ptr<TalkerApp> source = CreateObject<TalkerApp_sub>(); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
730 |
source->ConfSend (c0.Get (0), |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
731 |
InetSocketAddress (ifaces.GetAddress (1), |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
732 |
servPort)); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
733 |
source->Start (Seconds (0.0)); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
734 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
735 |
// 10 sec is an eternity for this case, we should be done by then. |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
736 |
Simulator::Stop (Seconds (10)); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
737 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
738 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
739 |
// For regression use only output ascii and pcap traces. |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
740 |
#ifdef REGRESSION_MODE |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
741 |
std::ofstream ascii; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
742 |
ascii.open ("tcp-2way.tr"); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
743 |
PointToPointHelper::EnableAsciiAll (ascii); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
744 |
PointToPointHelper::EnablePcapAll ("tcp-2way"); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
745 |
#endif |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
746 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
747 |
/* |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
748 |
* Now lets schedule some packets and go. For scheduling packets |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
749 |
* we have to be careful not to do the backchannel too early or |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
750 |
* we try to use a socket that doesn't yet exist since on the Rx |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
751 |
* side the socket is created as part of the normal Tx->Rx connection |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
752 |
* setup. |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
753 |
* |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
754 |
* The delay of 40ms was by trial and error and seems good enough. It |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
755 |
* would be nice to know what the bounds are and why.... |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
756 |
*/ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
757 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
758 |
char tagchar = 'A'; // the fill character in case we fill in SendPacket. |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
759 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
760 |
Time d2t = MilliSeconds(40); /* rate to change time offset (dt) so packets |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
761 |
* are sent in order (Tx->Rx, Rx->Tx for a given |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
762 |
* size over a range of sizes).*/ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
763 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
764 |
Time dt = MilliSeconds(0); /* ns3 doesn't take absolute times, but times |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
765 |
* relative to Simulator::Now() */ |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
766 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
767 |
uint32_t size = 0; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
768 |
source->ScheduleSendPacket (dt, tagchar, size); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
769 |
dt += d2t; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
770 |
++tagchar; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
771 |
sink->ScheduleSendPacket (dt, tagchar, size); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
772 |
for (size = 1; size <= 1000000; size *= 10) { |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
773 |
dt += d2t; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
774 |
++tagchar; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
775 |
source->ScheduleSendPacket (dt, tagchar, size); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
776 |
dt += d2t; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
777 |
++tagchar; |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
778 |
sink->ScheduleSendPacket (dt, tagchar, size); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
779 |
} |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
780 |
|
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
781 |
// Release the Hounds!! |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
782 |
Simulator::Run (); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
783 |
Simulator::Destroy (); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
784 |
fileOut.close(); |
fd69b15002ee
Add David Evensky's tcp-2way regression test
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
785 |
} |