author | Raj@rajib-bhattacharjeas-computer.local |
Sun, 25 Mar 2007 13:11:20 -0400 | |
changeset 372 | c242f488ef0b |
parent 367 | be64c89ac945 |
child 382 | 26528ff50d38 |
permissions | -rw-r--r-- |
349
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
1 |
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
2 |
// |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
3 |
// Copyright (c) 2006 Georgia Tech Research Corporation |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
4 |
// |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
5 |
// This program is free software; you can redistribute it and/or modify |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
6 |
// it under the terms of the GNU General Public License version 2 as |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
7 |
// published by the Free Software Foundation; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
8 |
// |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
9 |
// This program is distributed in the hope that it will be useful, |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
10 |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
11 |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
12 |
// GNU General Public License for more details. |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
13 |
// |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
14 |
// You should have received a copy of the GNU General Public License |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
15 |
// along with this program; if not, write to the Free Software |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
16 |
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
17 |
// |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
18 |
// Author: George F. Riley<riley@ece.gatech.edu> |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
19 |
// |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
20 |
|
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
21 |
// ns3 - On/Off Data Source Application class |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
22 |
// George F. Riley, Georgia Tech, Spring 2007 |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
23 |
// Adapted from ApplicationOnOff in GTNetS. |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
24 |
|
359
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
25 |
#include "ipv4-address.h" |
349
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
26 |
#include "node.h" |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
27 |
#include "node-reference.h" |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
28 |
#include "ns3/nstime.h" |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
29 |
#include "onoff-application.h" |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
30 |
#include "ns3/random-variable.h" |
359
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
31 |
#include "datagram-socket.h" |
349
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
32 |
#include "ns3/simulator.h" |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
33 |
|
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
34 |
using namespace std; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
35 |
|
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
36 |
namespace ns3 { |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
37 |
|
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
38 |
// Defaults for rate/size |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
39 |
double OnOffApplication::g_defaultRate = 500000.0; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
40 |
uint32_t OnOffApplication::g_defaultSize = 512; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
41 |
|
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
42 |
#define nil 0 |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
43 |
|
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
44 |
// Constructors |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
45 |
|
359
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
46 |
OnOffApplication::OnOffApplication(const Node& n, |
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
47 |
const Ipv4Address rip, // Remote IP addr |
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
48 |
uint16_t rport, // Remote port |
349
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
49 |
const RandomVariable& ontime, |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
50 |
const RandomVariable& offtime, |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
51 |
double rate, |
359
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
52 |
uint32_t size) |
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
53 |
: Application(n), |
349
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
54 |
m_socket(nil), // Socket allocated on Start |
359
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
55 |
m_peerIP(rip), |
349
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
56 |
m_peerPort(rport), |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
57 |
m_connected(false), |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
58 |
m_onTime(ontime.Copy()), |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
59 |
m_offTime(offtime.Copy()), |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
60 |
m_cbrRate(rate), |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
61 |
m_pktSize(size), |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
62 |
m_residualBits(0), |
372
c242f488ef0b
Added back corrected version of TimeUnit(string)
Raj@rajib-bhattacharjeas-computer.local
parents:
367
diff
changeset
|
63 |
m_lastStartTime((HighPrecision)0), |
349
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
64 |
m_maxBytes(0xffffffff), |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
65 |
m_totBytes(0), |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
66 |
m_startStopScheduled(false), |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
67 |
m_sendScheduled(false) |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
68 |
{ |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
69 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
70 |
|
359
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
71 |
OnOffApplication::OnOffApplication(const Node& n, const OnOffApplication& c) |
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
72 |
: Application(n), |
349
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
73 |
m_socket(nil), |
359
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
74 |
m_peerIP(c.m_peerIP), |
349
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
75 |
m_peerPort(c.m_peerPort), |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
76 |
m_connected(c.m_connected), |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
77 |
m_onTime(c.m_onTime->Copy()), |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
78 |
m_offTime(c.m_offTime->Copy()), |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
79 |
m_cbrRate(c.m_cbrRate), |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
80 |
m_pktSize(c.m_pktSize), |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
81 |
m_residualBits(c.m_residualBits), |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
82 |
m_lastStartTime(c.m_lastStartTime), |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
83 |
m_maxBytes(c.m_maxBytes), |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
84 |
m_totBytes(c.m_totBytes), |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
85 |
m_startStopScheduled(false), |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
86 |
m_sendScheduled(false) |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
87 |
{ |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
88 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
89 |
|
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
90 |
OnOffApplication::~OnOffApplication() |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
91 |
{ |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
92 |
delete m_socket; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
93 |
delete m_onTime; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
94 |
delete m_offTime; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
95 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
96 |
|
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
97 |
#ifdef REMOVE_THIS |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
98 |
// Handler Methods |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
99 |
void OnOffApplication::Handle(Event* e, Time_t t) |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
100 |
{ |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
101 |
AppOOEvent* ev = (AppOOEvent*)e; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
102 |
switch (ev->event) { |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
103 |
case AppOOEvent::SEND_PKT : |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
104 |
{ |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
105 |
SendPkt(false); // Send the packet |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
106 |
return; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
107 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
108 |
case AppOOEvent::START_GEN : |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
109 |
{ |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
110 |
DEBUG0((cout << "StartGen at " << Simulator::Now() << endl)); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
111 |
lastStartTime = Simulator::Now(); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
112 |
ScheduleNextTx(); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
113 |
Time_t onInterval = onTime->Value(); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
114 |
pendingOO->event = AppOOEvent::STOP_GEN; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
115 |
// Schedule the stop event |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
116 |
Simulator::Schedule(pendingOO, onInterval, this); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
117 |
return; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
118 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
119 |
case AppOOEvent::STOP_GEN : |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
120 |
{ |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
121 |
DEBUG0((cout << "StopGen at " << Simulator::Now() << endl)); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
122 |
if (totBytes < maxBytes) |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
123 |
{ // Only schedule if not execeeded maxBytes |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
124 |
Time_t offInterval = offTime->Value(); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
125 |
pendingOO->event = AppOOEvent::START_GEN; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
126 |
// Schedule the start event |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
127 |
Simulator::Schedule(pendingOO, offInterval, this); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
128 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
129 |
if (pendingEvent) |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
130 |
{ |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
131 |
// Calculate residual bits since last packet sent |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
132 |
residualBits += (uint32_t)(cbrRate*(Simulator::Now()-lastStartTime)); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
133 |
Simulator::Cancel(pendingEvent); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
134 |
delete pendingEvent; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
135 |
pendingEvent = nil; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
136 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
137 |
return; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
138 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
139 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
140 |
Application::Handle(e, t); // May be application event |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
141 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
142 |
#endif |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
143 |
|
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
144 |
// Application Methods |
359
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
145 |
void OnOffApplication::StartApplication() // Called at time specified by Start |
349
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
146 |
{ |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
147 |
// Create the socket if not already |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
148 |
if (!m_socket) |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
149 |
{ // Create the socket using the specified layer 4 protocol |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
150 |
#ifdef NOTYET |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
151 |
m_socket = GetNode()->GetKernel()->CreateGenericSocket(*m_l4Proto); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
152 |
m_socket->Bind(); // Choose any available port local port |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
153 |
m_socket->Connect(*m_peerIP, m_peerPort, |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
154 |
MakeCallback(&OnOffApplication::ConnectionSucceeded, |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
155 |
this), |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
156 |
MakeCallback(&OnOffApplication::ConnectionFailed, |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
157 |
this)); |
359
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
158 |
#endif |
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
159 |
m_socket = new DatagramSocket (GetNode()); |
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
160 |
m_socket->SetDefaultDestination(m_peerIP, m_peerPort); |
349
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
161 |
} |
359
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
162 |
StopApplication(); // Insure no pending event |
349
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
163 |
// If we are not yet connected, there is nothing to do here |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
164 |
// The ConnectionComplete upcall will start timers at that time |
359
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
165 |
//if (!m_connected) return; |
349
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
166 |
ScheduleStartEvent(); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
167 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
168 |
|
359
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
169 |
void OnOffApplication::StopApplication() // Called at time specified by Stop |
349
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
170 |
{ |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
171 |
if (m_startStopScheduled) |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
172 |
{ // Cancel the startStop event |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
173 |
Simulator::Cancel(m_startStopEvent); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
174 |
m_startStopScheduled = false; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
175 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
176 |
if (m_sendScheduled) |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
177 |
{ // Cancel the pending send packet event |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
178 |
Simulator::Cancel(m_sendEvent); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
179 |
m_sendScheduled = false; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
180 |
// Calculate residual bits since last packet sent |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
181 |
Time delta(Simulator::Now() - m_lastStartTime); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
182 |
m_residualBits += (uint32_t)(m_cbrRate * delta.GetSeconds()); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
183 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
184 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
185 |
|
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
186 |
OnOffApplication* OnOffApplication::Copy() const |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
187 |
{ |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
188 |
return new OnOffApplication(*this); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
189 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
190 |
|
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
191 |
// Event handlers |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
192 |
void OnOffApplication::StartSending() |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
193 |
{ |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
194 |
m_startStopScheduled = true; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
195 |
ScheduleNextTx(); // Schedule the send packet event |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
196 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
197 |
|
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
198 |
void OnOffApplication::StopSending() |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
199 |
{ |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
200 |
m_startStopScheduled = true; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
201 |
if (m_sendScheduled) Simulator::Cancel(m_sendEvent); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
202 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
203 |
|
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
204 |
// Private helpers |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
205 |
void OnOffApplication::ScheduleNextTx() |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
206 |
{ |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
207 |
if (m_totBytes < m_maxBytes) |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
208 |
{ |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
209 |
uint32_t bits = m_pktSize * 8 - m_residualBits; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
210 |
Time nextTime(Seconds (bits / m_cbrRate)); // Time till next packet |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
211 |
Simulator::Schedule(nextTime, &OnOffApplication::SendPacket, this); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
212 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
213 |
else |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
214 |
{ // All done, cancel any pending events |
359
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
215 |
StopApplication(); |
349
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
216 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
217 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
218 |
|
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
219 |
void OnOffApplication::ScheduleStartEvent() |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
220 |
{ // Schedules the event to start sending data (switch to the "On" state) |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
221 |
Time offInterval = Seconds(m_offTime->GetValue()); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
222 |
Simulator::Schedule(offInterval, &OnOffApplication::StartSending, this); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
223 |
m_startStopScheduled = true; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
224 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
225 |
|
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
226 |
void OnOffApplication::ScheduleStopEvent() |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
227 |
{ // Schedules the event to stop sending data (switch to "Off" state) |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
228 |
Time onInterval = Seconds(m_onTime->GetValue()); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
229 |
Simulator::Schedule(onInterval, &OnOffApplication::StopSending, this); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
230 |
m_startStopScheduled = true; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
231 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
232 |
|
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
233 |
|
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
234 |
void OnOffApplication::SendPacket() |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
235 |
{ |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
236 |
m_sendScheduled = false; |
359
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
237 |
m_socket->SendDummy(m_pktSize); |
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
238 |
#ifdef NOTYET |
349
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
239 |
m_socket->Send(0, m_pktSize); // Send the packet |
359
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
240 |
#endif |
349
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
241 |
m_totBytes += m_pktSize; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
242 |
m_lastStartTime = Simulator::Now(); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
243 |
m_residualBits = 0; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
244 |
ScheduleNextTx(); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
245 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
246 |
|
359
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
247 |
void OnOffApplication::ConnectionSucceeded(DatagramSocket*) |
349
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
248 |
{ |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
249 |
m_connected = true; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
250 |
ScheduleStartEvent(); |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
251 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
252 |
|
359
91b7ad7fa784
OnOffApplication functioning; some Node class cleanup
Tom Henderson <tomh@tomh.org>
parents:
349
diff
changeset
|
253 |
void OnOffApplication::ConnectionFailed(DatagramSocket*) |
349
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
254 |
{ |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
255 |
cout << "OnOffApplication, Connection Failed" << endl; |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
256 |
} |
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
257 |
|
3c91100689d7
Add base class IPAddr; L4Protocol; Protocol; OnOff Application, and base class Socket
Tom Henderson <tomh@tomh.org>
parents:
diff
changeset
|
258 |
} // Namespace ns3 |