RINASim  October 2016
Documentation of framework for OMNeT++
DTCPState.cc
Go to the documentation of this file.
1 // The MIT License (MIT)
2 //
3 // Copyright (c) 2014-2016 Brno University of Technology, PRISTINE project
4 //
5 // Permission is hereby granted, free of charge, to any person obtaining a copy
6 // of this software and associated documentation files (the "Software"), to deal
7 // in the Software without restriction, including without limitation the rights
8 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 // copies of the Software, and to permit persons to whom the Software is
10 // furnished to do so, subject to the following conditions:
11 //
12 // The above copyright notice and this permission notice shall be included in
13 // all copies or substantial portions of the Software.
14 //
15 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 // THE SOFTWARE.
22 
23 /*
24  * @file DTCPState.cc
25  * @author Marcel Marek (imarek@fit.vutbr.cz)
26  * @date May 3, 2014
27  * @brief
28  * @detail
29  */
30 
31 #include <DTCPState.h>
32 
34 
36 {
37  rcvRightWinEdge = UINT_MAX;
38 // rcvRate = ??
42  sendingRateFullfilled = false;
43 
45 
46 
47 }
48 
50 {
51  // timeUnit = 1000;
52  // sendingTimeUnit = 1000;
53 
54  // sendingRate = 2;
55 
56  sendingRate = 0;
57  sndLeftWinEdge = 0;
59 }
60 
62 {
63 // rcvRightWinEdge = rcvCredit;
64  resetRcvVars();
65 
66 
67  closedWindow = false;
68 // maxClosedWinQueLen = MAX_CLOSED_WIN_Q_LEN;
69  dupAcks = 0;
70  dupFC = 0;
71 
72 
73 // timeUnit = 1000;
74 // sendingTimeUnit = 1000;
75 
76 // rcvBufferPercentThreshold = 75;
77 // sendingRate = 2;
78 
79 // configRcvrRate = 50;
80 
81 
82  resetSndVars();
83 // rcvrRate = 0;
84  rendezSeqNum = 0;
85 
86 }
87 
88 
90 {
91 
92  winBased = false;
93  rateBased = false;
94 
95 
97 
98 
99  rxSent = 0;
100 
101  sndRendez = false;
102  rcvRendez = false;
103 
104  rendezvousTimer = nullptr;
105  reliableCPDUTimer = nullptr;
106 }
107 
109 {
110  rxSent++;
111 }
112 
113 
114 //bool DTCPState::isImmediate() const
115 //{
116 // return immediate;
117 //}
118 
119 //void DTCPState::setImmediate(bool immediate)
120 //{
121 // this->immediate = immediate;
122 //}
123 
125 {
126  return rcvRightWinEdgeSent;
127 }
128 
129 void DTCPState::setRcvRightWinEdgeSent(unsigned int rcvRightWinEdgeSent)
130 {
131  this->rcvRightWinEdgeSent = rcvRightWinEdgeSent;
132 }
133 
134 unsigned int DTCPState::getSndLeftWinEdge() const {
135  return sndLeftWinEdge;
136 }
137 
138 void DTCPState::setSenderLeftWinEdge(unsigned int senderLeftWinEdge) {
139  this->sndLeftWinEdge = senderLeftWinEdge;
140 }
141 
142 unsigned int DTCPState::getSndRightWinEdge() const
143 {
144  return sndRightWinEdge;
145 }
146 
147 void DTCPState::setSenderRightWinEdge(unsigned int senderRightWinEdge)
148 {
149  this->sndRightWinEdge = senderRightWinEdge;
150 }
151 
153 {
155  clearRxQ();
156 }
157 
158 unsigned int DTCPState::getRcvCredit() const
159 {
160  return rcvCredit;
161 }
162 
163 void DTCPState::setRcvCredit(unsigned int rcvCredit)
164 {
165  this->rcvCredit = rcvCredit;
166 }
167 
168 unsigned int DTCPState::getSndCredit() const
169 {
170  return sndCredit;
171 }
172 
173 void DTCPState::setSndCredit(unsigned int sndCredit)
174 {
175  this->sndCredit = sndCredit;
176 }
177 
178 unsigned int DTCPState::getRcvRightWinEdge() const
179 {
180  return rcvRightWinEdge;
181 }
182 
183 void DTCPState::setRcvRtWinEdge(unsigned int rcvRtWinEdge)
184 {
185  this->rcvRightWinEdge = rcvRtWinEdge;
186 }
187 
189 {
190  rcvRightWinEdge++;
191 }
192 
193 void DTCPState::updateRcvRtWinEdge(unsigned int rcvLtWinEdge)
194 {
195  setRcvRtWinEdge(rcvLtWinEdge + getRcvCredit());
196 }
197 
199 {
200  return nextSenderControlSeqNum++;
201 }
202 
204 {
206 }
207 
209  return lastControlSeqNumRcv;
210 }
211 
212 void DTCPState::setLastCtrlSeqNumRcv(unsigned int ctrlSeqNum){
213  lastControlSeqNumRcv = ctrlSeqNum;
214 }
215 
217 {
219 }
220 
221 void DTCPState::setRcvBufferPercentThreshold(unsigned int rcvBufferPercentThreshold)
222 {
223  this->rcvBufferPercentThreshold = rcvBufferPercentThreshold;
224 }
225 
227 {
228  return rcvBuffersPercentFree;
229 }
230 
231 void DTCPState::setRcvBuffersPercentFree(unsigned int rcvBuffersPercentFree)
232 {
233  this->rcvBuffersPercentFree = rcvBuffersPercentFree;
234 }
235 
236 //void DTCPState::deleteRxTimer(unsigned int seqNum)
237 //{
238 // std::vector<DTCPRxExpiryTimer*>::iterator it;
239 // for (it = rxQ.begin(); it != rxQ.end();)
240 // {
241 // if (seqNum == (*it)->getPdu()->getSeqNum())
242 // {
243 // delete (*it)->getPdu();
245 // cancelEvent((*it));
246 // delete (*it);
247 // rxQ.erase(it);
248 // return;
249 // }
250 // ++it;
251 // }
252 //}
253 
254 unsigned int DTCPState::getDataReXmitMax() const
255 {
256  return dataReXmitMax;
257 }
258 
259 void DTCPState::setDataReXmitMax(unsigned int dataReXmitMax)
260 {
261  this->dataReXmitMax = dataReXmitMax;
262 }
263 
264 std::vector<DTCPRxExpiryTimer*>* DTCPState::getRxQ()
265 {
266  return &rxQ;
267 }
268 
270 {
271  rxQ.push_back(timer);
272 }
273 
275 {
276  PDUQ_t::iterator it;
277  for (it = pduQ->begin(); it != pduQ->end();)
278  {
279  delete (*it);
280  it = pduQ->erase(it);
281  }
282 }
283 
285 {
286 
287  std::vector<DTCPRxExpiryTimer*>::iterator it;
288  for (it = rxQ.begin(); it != rxQ.end();)
289  {
290  if((*it)->getPdu() != NULL){
291  take((*it)->getPdu());
292  delete (*it)->getPdu();
293  }
294  drop((*it));
295  cancelAndDelete((*it));
296  it = rxQ.erase(it);
297  }
298 }
299 
301 {
303 }
304 
306 //TODO A3 Check if this PDU is already on the queue (I believe the FSM is broken and it might try to add one PDU twice)
307 
308  take(pdu);
309  closedWindowQ.push_back(pdu);
310 }
311 
312 std::vector<DataTransferPDU*>* DTCPState::getClosedWindowQ()
313 {
314  return &closedWindowQ;
315 }
316 
318 {
319  if (closedWindowQ.size() >= maxClosedWinQueLen)
320  {
321  return true;
322  }else
323  {
324  return false;
325  }
326 }
327 
329 
330  return closedWindow;
331 }
332 
333 void DTCPState::setClosedWindow(bool closedWindowQue) {
334  this->closedWindow = closedWindowQue;
335 }
336 
337 unsigned int DTCPState::getClosedWinQueLen() const {
338  return closedWindowQ.size();
339 }
340 
341 unsigned int DTCPState::getMaxClosedWinQueLen() const {
342  return maxClosedWinQueLen;
343 }
344 
345 void DTCPState::setMaxClosedWinQueLen(unsigned int maxClosedWinQueLen) {
346  this->maxClosedWinQueLen = maxClosedWinQueLen;
347 }
348 
349 
351  return sendingRateFullfilled;
352 }
353 
354 void DTCPState::setSendingRateFullfilled(bool sendingRateFullfilled) {
355  this->sendingRateFullfilled = sendingRateFullfilled;
356 }
357 
359 {
360  return pdusSentInTimeUnit;
361 }
362 
363 void DTCPState::setPdusSentInTimeUnit(unsigned int pdusSentInTimeUnit)
364 {
365  this->pdusSentInTimeUnit = pdusSentInTimeUnit;
366 }
367 
368 unsigned int DTCPState::getSendingRate() const
369 {
370  return sendingRate;
371 }
372 
373 unsigned int DTCPState::getRcvrRate() const
374 {
375  return rcvrRate;
376 }
377 
378 unsigned int DTCPState::getConfigRcvrRate() const
379 {
380  return configRcvrRate;
381 }
382 
383 void DTCPState::setConfigRcvrRate(unsigned int configRcvrRate)
384 {
385  this->configRcvrRate = configRcvrRate;
386 }
387 
388 void DTCPState::setRcvrRate(unsigned int rcvrRate)
389 {
390  this->rcvrRate = rcvrRate;
391 }
392 
393 void DTCPState::setSendingRate(unsigned int sendingRate)
394 {
395  this->sendingRate = sendingRate;
396 }
397 
398 unsigned int DTCPState::getDupAcks() const
399 {
400  return dupAcks;
401 }
402 
404 {
405  dupAcks++;
406 }
407 
409 {
410  dupFC++;
411 }
412 
413 unsigned long DTCPState::getTimeUnit() const
414 {
415  return timeUnit;
416 }
417 
418 unsigned int DTCPState::getDupFC() const
419 {
420  return dupFC;
421 }
422 
423 unsigned long DTCPState::getSendingTimeUnit() const
424 {
425  return sendingTimeUnit;
426 }
427 
428 void DTCPState::setSendingTimeUnit(unsigned long sendingTimeUnit)
429 {
430  this->sendingTimeUnit = sendingTimeUnit;
431 }
432 
433 void DTCPState::updateSndLWE(unsigned int seqNum)
434 {
435  if(!getRxQ()->empty()){
436  setSenderLeftWinEdge(getRxQ()->front()->getPdu()->getSeqNum());
437  }else{
438  setSenderLeftWinEdge(seqNum);
439  }
440 }
441 
442 void DTCPState::handleMessage(cMessage* msg)
443 {
444 }
445 
446 void DTCPState::initialize(int step)
447 {
448  if(step == 1){
449 
450  rxPresent = qoSCube->isRxOn();
453 
454  if(par("aTime").doubleValue() != 0){
455 // immediate = false;
456  }
457 
458  rcvCredit = par("rcvCredit");
459  if(getRINAModule<cModule*>(this, 2, {MOD_EFCP})->hasPar("rcvCredit")){
460  rcvCredit = getRINAModule<cModule*>(this, 2, {MOD_EFCP})->par("rcvCredit");
461  }
462  sndCredit = par("initialSenderCredit");
463  if(getRINAModule<cModule*>(this, 2, {MOD_EFCP})->hasPar("initialSenderCredit")){
464  sndCredit = getRINAModule<cModule*>(this, 2, {MOD_EFCP})->par("initialSenderCredit");
465  }
466  nextSenderControlSeqNum = par("nextSenderControlSeqNum");
467  dataReXmitMax = par("dataReXmitMax");
468 
469 
470  maxClosedWinQueLen = par("maxClosedWinQueLen");
471  if(getRINAModule<cModule*>(this, 2, {MOD_EFCP})->hasPar("maxClosedWinQueLen")){
472  maxClosedWinQueLen = getRINAModule<cModule*>(this, 2, {MOD_EFCP})->par("maxClosedWinQueLen");
473 
474  }
475 
476  timeUnit = par("timeUnit");
477  sendingTimeUnit = par("sendingTimeUnit");
478  rcvBufferPercentThreshold = par("rcvBufferPercentThreshold");
479 
480  initFC();
481  }
482 }
483 
484 unsigned int DTCPState::getRxSent() const
485 {
486  return rxSent;
487 }
488 
490  return qoSCube;
491 }
492 
493 void DTCPState::setQoSCube(const QoSCube*& qoSCube) {
494  this->qoSCube = qoSCube;
495 }
496 
498 {
499  return reliableCPDUTimer;
500 }
501 
503 {
504  reliableCPDUTimer = reliableCpduTimer;
505 }
506 
507 void DTCPState::initFromQoS(const QoSCube* qosCube)
508 {
509 
510 }
511 
512 unsigned int DTCPState::getRxQLen()
513 {
514  return rxQ.size();
515 }
516 
518  return rateBased;
519 }
520 
521 void DTCPState::setRateBased(bool rateBased) {
522  this->rateBased = rateBased;
523 }
524 
526  return rxPresent;
527 }
528 
529 void DTCPState::setRxPresent(bool rxPresent) {
530  this->rxPresent = rxPresent;
531 }
532 
533 bool DTCPState::isWinBased() const {
534  return winBased;
535 }
536 
537 void DTCPState::setWinBased(bool winBased) {
538  this->winBased = winBased;
539 }
540 
542 {
543  return pdusRcvdinTimeUnit;
544 }
545 
546 void DTCPState::setPdusRcvdinTimeUnit(unsigned int pdusRcvdinTimeUnit)
547 {
548  this->pdusRcvdinTimeUnit = pdusRcvdinTimeUnit;
549 }
550 
552 {
553  return lastControlSeqNumSent;
554 }
555 
556 void DTCPState::setLastControlSeqNumSent(unsigned int lastControlSeqNumSent)
557 {
558  this->lastControlSeqNumSent = lastControlSeqNumSent;
559 }
560 
562 {
563  return rcvRendez;
564 }
565 
566 void DTCPState::setRcvRendez(bool rcvRendez)
567 {
568  this->rcvRendez = rcvRendez;
569 }
570 
572 {
573  return sndRendez;
574 }
575 
576 void DTCPState::setSndRendez(bool sndRendez)
577 {
578  this->sndRendez = sndRendez;
579 }
580 
582 {
583  return rendezvousTimer;
584 }
585 
587 {
588  this->rendezvousTimer = rendezvousTimer;
589 }
590 
591 unsigned int DTCPState::getRendezSeqNum() const
592 {
593  return rendezSeqNum;
594 }
595 
596 void DTCPState::setRendezSeqNum(unsigned int rendezSeqNum)
597 {
598  this->rendezSeqNum = rendezSeqNum;
599 }
unsigned int rcvBuffersPercentFree
Definition: DTCPState.h:98
DTCPReliableControlPDUTimer * reliableCPDUTimer
Definition: DTCPState.h:118
void setRateBased(bool rateBased)
Definition: DTCPState.cc:521
void setSenderLeftWinEdge(unsigned int senderLeftWinEdge)
Definition: DTCPState.cc:138
void incRcvRtWinEdge()
Definition: DTCPState.cc:188
bool isRcvRendez() const
Definition: DTCPState.cc:561
unsigned int lastControlSeqNumRcv
Definition: DTCPState.h:62
void setWinBased(bool winBased)
Definition: DTCPState.cc:537
void clearClosedWindowQ()
Definition: DTCPState.cc:300
unsigned int rcvrRate
Definition: DTCPState.h:86
void setSndRendez(bool sndRendez)
Definition: DTCPState.cc:576
void setSendingTimeUnit(unsigned long sendingTimeUnit)
Definition: DTCPState.cc:428
void initFromQoS(const QoSCube *qosCube)
Definition: DTCPState.cc:507
void pushBackToRxQ(DTCPRxExpiryTimer *timer)
Definition: DTCPState.cc:269
unsigned int getDupFC() const
Definition: DTCPState.cc:418
void clearPDUQ(PDUQ_t *pduQ)
Definition: DTCPState.cc:274
std::vector< DataTransferPDU * > closedWindowQ
Definition: DTCPState.h:110
unsigned int getPdusRcvdInTimeUnit() const
Definition: DTCPState.cc:541
bool isRateFcOn() const
Definition: QoSCube.cc:478
unsigned int getRxSent() const
Definition: DTCPState.cc:484
unsigned int maxClosedWinQueLen
Definition: DTCPState.h:109
const char * MOD_EFCP
Definition: ExternConsts.cc:40
void setDataReXmitMax(unsigned int dataReXmitMax)
Definition: DTCPState.cc:259
virtual ~DTCPState()
Definition: DTCPState.cc:152
virtual void handleMessage(cMessage *msg)
Definition: DTCPState.cc:442
unsigned int getDataReXmitMax() const
Definition: DTCPState.cc:254
void setSenderRightWinEdge(unsigned int senderRightWinEdge)
Definition: DTCPState.cc:147
void setRxPresent(bool rxPresent)
Definition: DTCPState.cc:529
unsigned int sndCredit
Definition: DTCPState.h:56
unsigned int nextSenderControlSeqNum
Definition: DTCPState.h:61
Define_Module(DTCPState)
unsigned int rcvRightWinEdgeSent
Definition: DTCPState.h:53
bool isWinBased() const
Definition: DTCPState.cc:533
unsigned int rcvBufferPercentThreshold
Definition: DTCPState.h:99
void setSendingRateFullfilled(bool sendingRateFullfilled)
Definition: DTCPState.cc:354
void setLastCtrlSeqNumRcv(unsigned int ctrlSeqNum)
Definition: DTCPState.cc:212
unsigned int pdusSentInTimeUnit
Definition: DTCPState.h:71
void setRcvCredit(unsigned int rcvCredit)
Definition: DTCPState.cc:163
unsigned int getRendezSeqNum() const
Definition: DTCPState.cc:591
unsigned int getNextSndCtrlSeqNum()
Definition: DTCPState.cc:198
unsigned int configRcvrRate
Definition: DTCPState.h:106
const QoSCube * qoSCube
Definition: DTCPState.h:127
void setRcvRightWinEdgeSent(unsigned int rcvrRightWinEdgeSent)
Definition: DTCPState.cc:129
unsigned int getSndRightWinEdge() const
Definition: DTCPState.cc:142
unsigned int getRcvBuffersPercentFree() const
Definition: DTCPState.cc:226
unsigned int getPdusSentInTimeUnit() const
Definition: DTCPState.cc:358
unsigned int rcvRightWinEdge
Definition: DTCPState.h:52
unsigned int getDupAcks() const
Definition: DTCPState.cc:398
unsigned int pdusRcvdinTimeUnit
Definition: DTCPState.h:88
unsigned int getClosedWinQueLen() const
Definition: DTCPState.cc:337
unsigned int dupFC
Definition: DTCPState.h:107
const QoSCube * getQoSCube() const
Definition: DTCPState.cc:489
void setPdusSentInTimeUnit(unsigned int pdusSentInTimeUnit)
Definition: DTCPState.cc:363
bool isClosedWindow() const
Definition: DTCPState.cc:328
void setReliableCpduTimer(DTCPReliableControlPDUTimer *reliableCpduTimer)
Definition: DTCPState.cc:502
void setMaxClosedWinQueLen(unsigned int maxClosedWinQueLen)
Definition: DTCPState.cc:345
unsigned int getSendingRate() const
Definition: DTCPState.cc:368
void resetRcvVars()
Definition: DTCPState.cc:35
unsigned int getMaxClosedWinQueLen() const
Definition: DTCPState.cc:341
unsigned int getLastControlSeqNumSent() const
Definition: DTCPState.cc:551
void setPdusRcvdinTimeUnit(unsigned int pdusRcvdinTimeUnit)
Definition: DTCPState.cc:546
std::vector< DTCPRxExpiryTimer * > rxQ
Definition: DTCPState.h:112
unsigned long sendingTimeUnit
Definition: DTCPState.h:72
bool rcvRendez
Definition: DTCPState.h:116
void initFC()
Definition: DTCPState.cc:61
bool isRateBased() const
Definition: DTCPState.cc:517
void setQoSCube(const QoSCube *&qoSCube)
Definition: DTCPState.cc:493
void setSndCredit(unsigned int sndCredit)
Definition: DTCPState.cc:173
std::vector< DataTransferPDU * > PDUQ_t
void setRcvRtWinEdge(unsigned int rcvRtWinEdge)
Definition: DTCPState.cc:183
bool isRxPresent() const
Definition: DTCPState.cc:525
void setSendingRate(unsigned int sendingRate)
Definition: DTCPState.cc:393
unsigned int dataReXmitMax
Definition: DTCPState.h:65
bool rateBased
Definition: DTCPState.h:45
void setConfigRcvrRate(unsigned int configRcvrRate)
Definition: DTCPState.cc:383
bool rxPresent
Definition: DTCPState.h:46
DTCPReliableControlPDUTimer * getReliableCpduTimer()
Definition: DTCPState.cc:497
unsigned int getRcvRightWinEdge() const
Definition: DTCPState.cc:178
void resetSndVars()
Definition: DTCPState.cc:49
void incDupAcks()
Definition: DTCPState.cc:403
DTCPRendezvousTimer * rendezvousTimer
Definition: DTCPState.h:117
void setRendezSeqNum(unsigned int rendezSeqNum)
Definition: DTCPState.cc:596
bool isSndRendez() const
Definition: DTCPState.cc:571
bool isSendingRateFullfilled() const
Definition: DTCPState.cc:350
void updateSndLWE(unsigned int seqNum)
Definition: DTCPState.cc:433
virtual void initialize(int step)
Definition: DTCPState.cc:446
unsigned int getSndLeftWinEdge() const
Definition: DTCPState.cc:134
unsigned int getNextSndCtrlSeqNumNoInc()
Definition: DTCPState.cc:203
unsigned int getConfigRcvrRate() const
Definition: DTCPState.cc:378
unsigned int getLastCtrlSeqNumRcv()
Definition: DTCPState.cc:208
void setRcvrRate(unsigned int rcvrRate)
Definition: DTCPState.cc:388
Class representing QoSCube with all its properties that is primarily used by FA, RMT and RA Specifica...
Definition: QoSCube.h:57
bool isRxOn() const
Definition: QoSCube.cc:483
std::vector< DTCPRxExpiryTimer * > * getRxQ()
Definition: DTCPState.cc:264
bool sndRendez
Definition: DTCPState.h:115
unsigned int getRcvrRate() const
Definition: DTCPState.cc:373
void setRcvBufferPercentThreshold(unsigned int rcvBufferPercentThreshold)
Definition: DTCPState.cc:221
unsigned int sndRightWinEdge
Definition: DTCPState.h:51
void setRcvBuffersPercentFree(unsigned int rcvBuffersPercentFree)
Definition: DTCPState.cc:231
std::vector< DataTransferPDU * > * getClosedWindowQ()
Definition: DTCPState.cc:312
unsigned int lastControlSeqNumSent
Definition: DTCPState.h:63
void setRendezvousTimer(DTCPRendezvousTimer *rendezvousTimer)
Definition: DTCPState.cc:586
unsigned int sndLeftWinEdge
Definition: DTCPState.h:50
unsigned int sendingRate
Definition: DTCPState.h:69
void incRxSent()
Definition: DTCPState.cc:108
unsigned int getRxQLen()
Definition: DTCPState.cc:512
void setClosedWindow(bool closedWindow)
Definition: DTCPState.cc:333
bool winBased
Definition: DTCPState.h:44
unsigned int getRcvBufferPercentThreshold() const
Definition: DTCPState.cc:216
bool isWindowFcOn() const
Definition: QoSCube.cc:488
unsigned int rxSent
Definition: DTCPState.h:123
bool sendingRateFullfilled
Definition: DTCPState.h:101
bool closedWindow
Definition: DTCPState.h:108
unsigned int rendezSeqNum
Definition: DTCPState.h:120
void setLastControlSeqNumSent(unsigned int lastControlSeqNumSent)
Definition: DTCPState.cc:556
void clearRxQ()
Definition: DTCPState.cc:284
unsigned int rcvCredit
Definition: DTCPState.h:55
unsigned int getRcvrRightWinEdgeSent() const
Definition: DTCPState.cc:124
DTCPRendezvousTimer * getRendezvousTimer()
Definition: DTCPState.cc:581
bool isClosedWinQClosed() const
Definition: DTCPState.cc:317
unsigned int dupAcks
Definition: DTCPState.h:104
unsigned long timeUnit
Definition: DTCPState.h:68
unsigned int getSndCredit() const
Definition: DTCPState.cc:168
void setRcvRendez(bool rcvRendez)
Definition: DTCPState.cc:566
unsigned long getTimeUnit() const
Definition: DTCPState.cc:413
unsigned int getRcvCredit() const
Definition: DTCPState.cc:158
void incDupFC()
Definition: DTCPState.cc:408
unsigned long getSendingTimeUnit() const
Definition: DTCPState.cc:423
void pushBackToClosedWinQ(DataTransferPDU *pdu)
Definition: DTCPState.cc:305
void updateRcvRtWinEdge(unsigned int rcvLtWinEdge)
Definition: DTCPState.cc:193