INET Framework for OMNeT++/OMNEST
inet::UDPBasicBurst Class Reference

UDP application. More...

#include <UDPBasicBurst.h>

Inheritance diagram for inet::UDPBasicBurst:
inet::ApplicationBase inet::OperationalBase inet::ILifecycle

Public Types

enum  ChooseDestAddrMode { ONCE = 1, PER_BURST, PER_SEND }
 

Public Member Functions

 UDPBasicBurst ()
 
 ~UDPBasicBurst ()
 
- Public Member Functions inherited from inet::ApplicationBase
 ApplicationBase ()
 
- Public Member Functions inherited from inet::OperationalBase
 OperationalBase ()
 
- Public Member Functions inherited from inet::ILifecycle
virtual ~ILifecycle ()
 

Protected Types

enum  SelfMsgKinds { START = 1, SEND, STOP }
 
typedef std::map< int, int > SourceSequence
 

Protected Member Functions

virtual L3Address chooseDestAddr ()
 
virtual cPacket * createPacket ()
 
virtual void processPacket (cPacket *msg)
 
virtual void generateBurst ()
 
virtual int numInitStages () const override
 
virtual void initialize (int stage) override
 
virtual void handleMessageWhenUp (cMessage *msg) override
 
virtual void finish () override
 
virtual void refreshDisplay () const override
 
virtual void processStart ()
 
virtual void processSend ()
 
virtual void processStop ()
 
virtual bool handleNodeStart (IDoneCallback *doneCallback) override
 
virtual bool handleNodeShutdown (IDoneCallback *doneCallback) override
 
virtual void handleNodeCrash () override
 
- Protected Member Functions inherited from inet::ApplicationBase
virtual bool isInitializeStage (int stage) override
 
virtual bool isNodeStartStage (int stage) override
 
virtual bool isNodeShutdownStage (int stage) override
 
- Protected Member Functions inherited from inet::OperationalBase
virtual void handleMessage (cMessage *msg) override
 
virtual void handleMessageWhenDown (cMessage *msg)
 
virtual bool handleOperationStage (LifecycleOperation *operation, int stage, IDoneCallback *doneCallback) override
 Perform one stage of a lifecycle operation. More...
 
virtual void setOperational (bool isOperational)
 

Protected Attributes

std::vector< L3AddressdestAddresses
 
ChooseDestAddrMode chooseDestAddrMode = (ChooseDestAddrMode)0
 
simtime_t delayLimit
 
simtime_t startTime
 
simtime_t stopTime
 
int localPort = -1
 
int destPort = -1
 
int destAddrRNG = -1
 
cPar * messageLengthPar = nullptr
 
cPar * burstDurationPar = nullptr
 
cPar * sleepDurationPar = nullptr
 
cPar * sendIntervalPar = nullptr
 
UDPSocket socket
 
L3Address destAddr
 
SourceSequence sourceSequence
 
cMessage * timerNext = nullptr
 
simtime_t nextPkt
 
simtime_t nextBurst
 
simtime_t nextSleep
 
bool isSource = false
 
bool activeBurst = false
 
bool haveSleepDuration = false
 
int numSent = 0
 
int numReceived = 0
 
int numDeleted = 0
 
int numDuplicated = 0
 
- Protected Attributes inherited from inet::OperationalBase
bool isOperational
 
simtime_t lastChange
 

Static Protected Attributes

static int counter
 
static simsignal_t sentPkSignal = registerSignal("sentPk")
 
static simsignal_t rcvdPkSignal = registerSignal("rcvdPk")
 
static simsignal_t outOfOrderPkSignal = registerSignal("outOfOrderPk")
 
static simsignal_t dropPkSignal = registerSignal("dropPk")
 

Detailed Description

UDP application.

See NED for more info.

Member Typedef Documentation

typedef std::map<int, int> inet::UDPBasicBurst::SourceSequence
protected

Member Enumeration Documentation

Enumerator
ONCE 
PER_BURST 
PER_SEND 
40  {
41  ONCE = 1, PER_BURST, PER_SEND
42  };
Definition: UDPBasicBurst.h:41
Definition: UDPBasicBurst.h:41
Definition: UDPBasicBurst.h:41
Enumerator
START 
SEND 
STOP 
45 { START = 1, SEND, STOP };
Definition: UDPBasicBurst.h:45
Definition: UDPBasicBurst.h:45
Definition: UDPBasicBurst.h:45

Constructor & Destructor Documentation

inet::UDPBasicBurst::UDPBasicBurst ( )
inline
110 {}
inet::UDPBasicBurst::~UDPBasicBurst ( )
49 {
50  cancelAndDelete(timerNext);
51 }
cMessage * timerNext
Definition: UDPBasicBurst.h:67

Member Function Documentation

L3Address inet::UDPBasicBurst::chooseDestAddr ( )
protectedvirtual

Referenced by generateBurst(), and processStart().

98 {
99  if (destAddresses.size() == 1)
100  return destAddresses[0];
101 
102  int k = getRNG(destAddrRNG)->intRand(destAddresses.size());
103  return destAddresses[k];
104 }
int destAddrRNG
Definition: UDPBasicBurst.h:55
std::vector< L3Address > destAddresses
Definition: UDPBasicBurst.h:49
const double k
Definition: QAM16Modulation.cc:24
cPacket * inet::UDPBasicBurst::createPacket ( )
protectedvirtual

Referenced by generateBurst().

107 {
108  char msgName[32];
109  sprintf(msgName, "UDPBasicAppData-%d", counter++);
110  long msgByteLength = messageLengthPar->longValue();
111  ApplicationPacket *payload = new ApplicationPacket(msgName);
112  payload->setByteLength(msgByteLength);
113  payload->setSequenceNumber(numSent);
114  payload->addPar("sourceId") = getId();
115  payload->addPar("msgId") = numSent;
116 
117  return payload;
118 }
cPar * messageLengthPar
Definition: UDPBasicBurst.h:58
static int counter
Definition: UDPBasicBurst.h:76
int numSent
Definition: UDPBasicBurst.h:78
void inet::UDPBasicBurst::finish ( )
overrideprotectedvirtual
310 {
311  recordScalar("Total sent", numSent);
312  recordScalar("Total received", numReceived);
313  recordScalar("Total deleted", numDeleted);
314  ApplicationBase::finish();
315 }
int numDeleted
Definition: UDPBasicBurst.h:80
int numReceived
Definition: UDPBasicBurst.h:79
int numSent
Definition: UDPBasicBurst.h:78
void inet::UDPBasicBurst::generateBurst ( )
protectedvirtual

Referenced by processSend().

259 {
260  simtime_t now = simTime();
261 
262  if (nextPkt < now)
263  nextPkt = now;
264 
265  double sendInterval = sendIntervalPar->doubleValue();
266  if (sendInterval <= 0.0)
267  throw cRuntimeError("The sendInterval parameter must be bigger than 0");
268  nextPkt += sendInterval;
269 
270  if (activeBurst && nextBurst <= now) { // new burst
271  double burstDuration = burstDurationPar->doubleValue();
272  if (burstDuration < 0.0)
273  throw cRuntimeError("The burstDuration parameter mustn't be smaller than 0");
274  double sleepDuration = sleepDurationPar->doubleValue();
275 
276  if (burstDuration == 0.0)
277  activeBurst = false;
278  else {
279  if (sleepDuration < 0.0)
280  throw cRuntimeError("The sleepDuration parameter mustn't be smaller than 0");
281  nextSleep = now + burstDuration;
282  nextBurst = nextSleep + sleepDuration;
283  }
284 
287  }
288 
291 
292  cPacket *payload = createPacket();
293  payload->setTimestamp();
294  emit(sentPkSignal, payload);
295  socket.sendTo(payload, destAddr, destPort);
296  numSent++;
297 
298  // Next timer
299  if (activeBurst && nextPkt >= nextSleep)
300  nextPkt = nextBurst;
301 
302  if (stopTime >= SIMTIME_ZERO && nextPkt >= stopTime) {
303  timerNext->setKind(STOP);
304  nextPkt = stopTime;
305  }
306  scheduleAt(nextPkt, timerNext);
307 }
ChooseDestAddrMode chooseDestAddrMode
Definition: UDPBasicBurst.h:50
static simsignal_t sentPkSignal
Definition: UDPBasicBurst.h:83
cPar * sleepDurationPar
Definition: UDPBasicBurst.h:60
void sendTo(cPacket *msg, L3Address destAddr, int destPort, const SendOptions *options=nullptr)
Sends a data packet to the given address and port.
Definition: UDPSocket.cc:88
Definition: UDPBasicBurst.h:45
simtime_t stopTime
Definition: UDPBasicBurst.h:53
simtime_t nextBurst
Definition: UDPBasicBurst.h:69
Definition: UDPBasicBurst.h:41
L3Address destAddr
Definition: UDPBasicBurst.h:65
bool activeBurst
Definition: UDPBasicBurst.h:72
virtual cPacket * createPacket()
Definition: UDPBasicBurst.cc:106
cPar * burstDurationPar
Definition: UDPBasicBurst.h:59
virtual L3Address chooseDestAddr()
Definition: UDPBasicBurst.cc:97
simtime_t nextSleep
Definition: UDPBasicBurst.h:70
UDPSocket socket
Definition: UDPBasicBurst.h:64
int numSent
Definition: UDPBasicBurst.h:78
cMessage * timerNext
Definition: UDPBasicBurst.h:67
int destPort
Definition: UDPBasicBurst.h:54
cPar * sendIntervalPar
Definition: UDPBasicBurst.h:61
Definition: UDPBasicBurst.h:41
simtime_t nextPkt
Definition: UDPBasicBurst.h:68
void inet::UDPBasicBurst::handleMessageWhenUp ( cMessage *  msg)
overrideprotectedvirtual

Implements inet::OperationalBase.

175 {
176  if (msg->isSelfMessage()) {
177  switch (msg->getKind()) {
178  case START:
179  processStart();
180  break;
181 
182  case SEND:
183  processSend();
184  break;
185 
186  case STOP:
187  processStop();
188  break;
189 
190  default:
191  throw cRuntimeError("Invalid kind %d in self message", (int)msg->getKind());
192  }
193  }
194  else if (msg->getKind() == UDP_I_DATA) {
195  // process incoming packet
196  processPacket(PK(msg));
197  }
198  else if (msg->getKind() == UDP_I_ERROR) {
199  EV_WARN << "Ignoring UDP error report\n";
200  delete msg;
201  }
202  else {
203  throw cRuntimeError("Unrecognized message (%s)%s", msg->getClassName(), msg->getName());
204  }
205 }
virtual void processStop()
Definition: UDPBasicBurst.cc:169
virtual void processSend()
Definition: UDPBasicBurst.cc:160
Definition: UDPBasicBurst.h:45
Definition: UDPControlInfo_m.h:83
Definition: UDPBasicBurst.h:45
virtual void processPacket(cPacket *msg)
Definition: UDPBasicBurst.cc:214
Definition: UDPControlInfo_m.h:84
Definition: UDPBasicBurst.h:45
#define PK(msg)
Definition: INETDefs.h:92
virtual void processStart()
Definition: UDPBasicBurst.cc:120
void inet::UDPBasicBurst::handleNodeCrash ( )
overrideprotectedvirtual

Reimplemented from inet::OperationalBase.

339 {
340  if (timerNext)
341  cancelEvent(timerNext);
342  activeBurst = false;
343 }
bool activeBurst
Definition: UDPBasicBurst.h:72
cMessage * timerNext
Definition: UDPBasicBurst.h:67
bool inet::UDPBasicBurst::handleNodeShutdown ( IDoneCallback doneCallback)
overrideprotectedvirtual

Reimplemented from inet::OperationalBase.

330 {
331  if (timerNext)
332  cancelEvent(timerNext);
333  activeBurst = false;
334  //TODO if(socket.isOpened()) socket.close();
335  return true;
336 }
bool activeBurst
Definition: UDPBasicBurst.h:72
cMessage * timerNext
Definition: UDPBasicBurst.h:67
bool inet::UDPBasicBurst::handleNodeStart ( IDoneCallback doneCallback)
overrideprotectedvirtual

Reimplemented from inet::OperationalBase.

318 {
319  simtime_t start = std::max(startTime, simTime());
320 
321  if ((stopTime < SIMTIME_ZERO) || (start < stopTime) || (start == stopTime && startTime == stopTime)) {
322  timerNext->setKind(START);
323  scheduleAt(start, timerNext);
324  }
325 
326  return true;
327 }
double max(double a, double b)
Returns the greater of the given parameters.
Definition: INETMath.h:161
simtime_t stopTime
Definition: UDPBasicBurst.h:53
Definition: UDPBasicBurst.h:45
cMessage * timerNext
Definition: UDPBasicBurst.h:67
simtime_t startTime
Definition: UDPBasicBurst.h:52
void inet::UDPBasicBurst::initialize ( int  stage)
overrideprotectedvirtual

Reimplemented from inet::OperationalBase.

54 {
56 
57  if (stage == INITSTAGE_LOCAL) {
58  counter = 0;
59  numSent = 0;
60  numReceived = 0;
61  numDeleted = 0;
62  numDuplicated = 0;
63 
64  delayLimit = par("delayLimit");
65  startTime = par("startTime");
66  stopTime = par("stopTime");
67  if (stopTime >= SIMTIME_ZERO && stopTime <= startTime)
68  throw cRuntimeError("Invalid startTime/stopTime parameters");
69 
70  messageLengthPar = &par("messageLength");
71  burstDurationPar = &par("burstDuration");
72  sleepDurationPar = &par("sleepDuration");
73  sendIntervalPar = &par("sendInterval");
77 
78  destAddrRNG = par("destAddrRNG");
79  const char *addrModeStr = par("chooseDestAddrMode").stringValue();
80  int addrMode = cEnum::get("inet::ChooseDestAddrMode")->lookup(addrModeStr);
81  if (addrMode == -1)
82  throw cRuntimeError("Invalid chooseDestAddrMode: '%s'", addrModeStr);
84 
85  WATCH(numSent);
86  WATCH(numReceived);
87  WATCH(numDeleted);
88  WATCH(numDuplicated);
89 
90  localPort = par("localPort");
91  destPort = par("destPort");
92 
93  timerNext = new cMessage("UDPBasicBurstTimer");
94  }
95 }
ChooseDestAddrMode chooseDestAddrMode
Definition: UDPBasicBurst.h:50
simtime_t delayLimit
Definition: UDPBasicBurst.h:51
cPar * sleepDurationPar
Definition: UDPBasicBurst.h:60
int destAddrRNG
Definition: UDPBasicBurst.h:55
cPar * messageLengthPar
Definition: UDPBasicBurst.h:58
ChooseDestAddrMode
Definition: UDPBasicBurst.h:40
int numDeleted
Definition: UDPBasicBurst.h:80
simtime_t stopTime
Definition: UDPBasicBurst.h:53
static int counter
Definition: UDPBasicBurst.h:76
simtime_t nextBurst
Definition: UDPBasicBurst.h:69
Local initializations.
Definition: InitStages.h:35
int numReceived
Definition: UDPBasicBurst.h:79
int localPort
Definition: UDPBasicBurst.h:54
int numDuplicated
Definition: UDPBasicBurst.h:81
cPar * burstDurationPar
Definition: UDPBasicBurst.h:59
virtual void initialize(int stage) override
Definition: OperationalBase.cc:32
simtime_t nextSleep
Definition: UDPBasicBurst.h:70
int numSent
Definition: UDPBasicBurst.h:78
cMessage * timerNext
Definition: UDPBasicBurst.h:67
simtime_t startTime
Definition: UDPBasicBurst.h:52
int destPort
Definition: UDPBasicBurst.h:54
cPar * sendIntervalPar
Definition: UDPBasicBurst.h:61
simtime_t nextPkt
Definition: UDPBasicBurst.h:68
virtual int inet::UDPBasicBurst::numInitStages ( ) const
inlineoverrideprotectedvirtual

Reimplemented from inet::OperationalBase.

95 { return NUM_INIT_STAGES; }
The number of initialization stages.
Definition: InitStages.h:116
void inet::UDPBasicBurst::processPacket ( cPacket *  msg)
protectedvirtual

Referenced by handleMessageWhenUp().

215 {
216  if (pk->getKind() == UDP_I_ERROR) {
217  EV_WARN << "UDP error received\n";
218  delete pk;
219  return;
220  }
221 
222  if (pk->hasPar("sourceId") && pk->hasPar("msgId")) {
223  // duplicate control
224  int moduleId = (int)pk->par("sourceId");
225  int msgId = (int)pk->par("msgId");
226  auto it = sourceSequence.find(moduleId);
227  if (it != sourceSequence.end()) {
228  if (it->second >= msgId) {
229  EV_DEBUG << "Out of order packet: " << UDPSocket::getReceivedPacketInfo(pk) << endl;
230  emit(outOfOrderPkSignal, pk);
231  delete pk;
232  numDuplicated++;
233  return;
234  }
235  else
236  it->second = msgId;
237  }
238  else
239  sourceSequence[moduleId] = msgId;
240  }
241 
242  if (delayLimit > 0) {
243  if (simTime() - pk->getTimestamp() > delayLimit) {
244  EV_DEBUG << "Old packet: " << UDPSocket::getReceivedPacketInfo(pk) << endl;
245  emit(dropPkSignal, pk);
246  delete pk;
247  numDeleted++;
248  return;
249  }
250  }
251 
252  EV_INFO << "Received packet: " << UDPSocket::getReceivedPacketInfo(pk) << endl;
253  emit(rcvdPkSignal, pk);
254  numReceived++;
255  delete pk;
256 }
simtime_t delayLimit
Definition: UDPBasicBurst.h:51
static simsignal_t outOfOrderPkSignal
Definition: UDPBasicBurst.h:85
int numDeleted
Definition: UDPBasicBurst.h:80
static std::string getReceivedPacketInfo(cPacket *pk)
Utility function: returns a line of information about a packet received via UDP.
Definition: UDPSocket.cc:324
Definition: UDPControlInfo_m.h:84
static simsignal_t rcvdPkSignal
Definition: UDPBasicBurst.h:84
int numReceived
Definition: UDPBasicBurst.h:79
int numDuplicated
Definition: UDPBasicBurst.h:81
SourceSequence sourceSequence
Definition: UDPBasicBurst.h:66
static simsignal_t dropPkSignal
Definition: UDPBasicBurst.h:86
void inet::UDPBasicBurst::processSend ( )
protectedvirtual

Referenced by handleMessageWhenUp(), and processStart().

161 {
162  if (stopTime < SIMTIME_ZERO || simTime() < stopTime) {
163  // send and reschedule next sending
164  if (isSource) // if the node is a sink, don't generate messages
165  generateBurst();
166  }
167 }
simtime_t stopTime
Definition: UDPBasicBurst.h:53
bool isSource
Definition: UDPBasicBurst.h:71
virtual void generateBurst()
Definition: UDPBasicBurst.cc:258
void inet::UDPBasicBurst::processStart ( )
protectedvirtual

Referenced by handleMessageWhenUp().

121 {
122  socket.setOutputGate(gate("udpOut"));
124 
125  const char *destAddrs = par("destAddresses");
126  cStringTokenizer tokenizer(destAddrs);
127  const char *token;
128  bool excludeLocalDestAddresses = par("excludeLocalDestAddresses").boolValue();
129 
130  IInterfaceTable *ift = getModuleFromPar<IInterfaceTable>(par("interfaceTableModule"), this);
131 
132  while ((token = tokenizer.nextToken()) != nullptr) {
133  if (strstr(token, "Broadcast") != nullptr)
135  else {
136  L3Address addr = L3AddressResolver().resolve(token);
137  if (excludeLocalDestAddresses && ift && ift->isLocalAddress(addr))
138  continue;
139  destAddresses.push_back(addr);
140  }
141  }
142 
143  nextSleep = simTime();
144  nextBurst = simTime();
145  nextPkt = simTime();
146  activeBurst = false;
147 
148  isSource = !destAddresses.empty();
149 
150  if (isSource) {
151  if (chooseDestAddrMode == ONCE)
153 
154  activeBurst = true;
155  }
156  timerNext->setKind(SEND);
157  processSend();
158 }
ChooseDestAddrMode chooseDestAddrMode
Definition: UDPBasicBurst.h:50
virtual void processSend()
Definition: UDPBasicBurst.cc:160
Definition: UDPBasicBurst.h:45
void setOutputGate(cGate *toUdp)
Sets the gate on which to send to UDP.
Definition: UDPSocket.h:110
simtime_t nextBurst
Definition: UDPBasicBurst.h:69
bool isSource
Definition: UDPBasicBurst.h:71
L3Address destAddr
Definition: UDPBasicBurst.h:65
bool activeBurst
Definition: UDPBasicBurst.h:72
std::vector< L3Address > destAddresses
Definition: UDPBasicBurst.h:49
int localPort
Definition: UDPBasicBurst.h:54
virtual L3Address chooseDestAddr()
Definition: UDPBasicBurst.cc:97
Definition: UDPBasicBurst.h:41
simtime_t nextSleep
Definition: UDPBasicBurst.h:70
UDPSocket socket
Definition: UDPBasicBurst.h:64
cMessage * timerNext
Definition: UDPBasicBurst.h:67
static const IPv4Address ALLONES_ADDRESS
255.255.255.255
Definition: IPv4Address.h:105
void bind(int localPort)
Bind the socket to a local port number.
Definition: UDPSocket.cc:53
simtime_t nextPkt
Definition: UDPBasicBurst.h:68
void inet::UDPBasicBurst::processStop ( )
protectedvirtual

Referenced by handleMessageWhenUp().

170 {
171  socket.close();
172 }
void close()
Unbinds the socket.
Definition: UDPSocket.cc:112
UDPSocket socket
Definition: UDPBasicBurst.h:64
void inet::UDPBasicBurst::refreshDisplay ( ) const
overrideprotectedvirtual
208 {
209  char buf[100];
210  sprintf(buf, "rcvd: %d pks\nsent: %d pks", numReceived, numSent);
211  getDisplayString().setTagArg("t", 0, buf);
212 }
int numReceived
Definition: UDPBasicBurst.h:79
int numSent
Definition: UDPBasicBurst.h:78

Member Data Documentation

bool inet::UDPBasicBurst::activeBurst = false
protected
cPar* inet::UDPBasicBurst::burstDurationPar = nullptr
protected

Referenced by generateBurst(), and initialize().

ChooseDestAddrMode inet::UDPBasicBurst::chooseDestAddrMode = (ChooseDestAddrMode)0
protected
int inet::UDPBasicBurst::counter
staticprotected

Referenced by createPacket(), and initialize().

simtime_t inet::UDPBasicBurst::delayLimit
protected

Referenced by initialize(), and processPacket().

L3Address inet::UDPBasicBurst::destAddr
protected

Referenced by generateBurst(), and processStart().

std::vector<L3Address> inet::UDPBasicBurst::destAddresses
protected

Referenced by chooseDestAddr(), and processStart().

int inet::UDPBasicBurst::destAddrRNG = -1
protected

Referenced by chooseDestAddr(), and initialize().

int inet::UDPBasicBurst::destPort = -1
protected

Referenced by generateBurst(), and initialize().

simsignal_t inet::UDPBasicBurst::dropPkSignal = registerSignal("dropPk")
staticprotected

Referenced by processPacket().

bool inet::UDPBasicBurst::haveSleepDuration = false
protected
bool inet::UDPBasicBurst::isSource = false
protected

Referenced by processSend(), and processStart().

int inet::UDPBasicBurst::localPort = -1
protected

Referenced by initialize(), and processStart().

cPar* inet::UDPBasicBurst::messageLengthPar = nullptr
protected

Referenced by createPacket(), and initialize().

simtime_t inet::UDPBasicBurst::nextBurst
protected
simtime_t inet::UDPBasicBurst::nextPkt
protected
simtime_t inet::UDPBasicBurst::nextSleep
protected
int inet::UDPBasicBurst::numDeleted = 0
protected

Referenced by finish(), initialize(), and processPacket().

int inet::UDPBasicBurst::numDuplicated = 0
protected

Referenced by initialize(), and processPacket().

int inet::UDPBasicBurst::numReceived = 0
protected
int inet::UDPBasicBurst::numSent = 0
protected
simsignal_t inet::UDPBasicBurst::outOfOrderPkSignal = registerSignal("outOfOrderPk")
staticprotected

Referenced by processPacket().

simsignal_t inet::UDPBasicBurst::rcvdPkSignal = registerSignal("rcvdPk")
staticprotected

Referenced by processPacket().

cPar* inet::UDPBasicBurst::sendIntervalPar = nullptr
protected

Referenced by generateBurst(), and initialize().

simsignal_t inet::UDPBasicBurst::sentPkSignal = registerSignal("sentPk")
staticprotected

Referenced by generateBurst().

cPar* inet::UDPBasicBurst::sleepDurationPar = nullptr
protected

Referenced by generateBurst(), and initialize().

UDPSocket inet::UDPBasicBurst::socket
protected
SourceSequence inet::UDPBasicBurst::sourceSequence
protected

Referenced by processPacket().

simtime_t inet::UDPBasicBurst::startTime
protected

Referenced by handleNodeStart(), and initialize().

simtime_t inet::UDPBasicBurst::stopTime
protected
cMessage* inet::UDPBasicBurst::timerNext = nullptr
protected

The documentation for this class was generated from the following files: