RINASim  October 2016
Documentation of framework for OMNeT++
TxControlPolicyBase.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.
30 #include "TxControlPolicyBase.h"
31 
33 {
34 
35 
36 }
37 
39 {
40 
41 }
42 
44 
45  PDUQ_t* pduQ;
46  if(!dtpState->getGeneratedPDUQ()->empty()){
47  pduQ = dtpState->getGeneratedPDUQ();
48  }else{
49  pduQ = dtcpState->getClosedWindowQ();
50  }
51 
52  /* Default */
53  /* Add as many PDU to PostablePDUs as Window Allows, closing it if necessary
54  And Set the ClosedWindow flag appropriately. */
55  PDUQ_t::iterator it;
56 // PDUQ_t* pduQ = dtpState->getGeneratedPDUQ();
57  for (it = pduQ->begin();
58  it != pduQ->end() && (*it)->getSeqNum() <= dtcpState->getSndRightWinEdge();)
59  {
60 
61  dtpState->pushBackToPostablePDUQ((*it));
62 // dtpState->getGeneratedPDUQ()->erase(it);
63  it = pduQ->erase(it);
64 
65  }
66 
67  if (!dtpState->getGeneratedPDUQ()->empty() || dtcpState->getClosedWinQueLen() >= dtcpState->getMaxClosedWinQueLen())
68  {
69  dtcpState->setClosedWindow(true);
70  }
71  /* End default */
72 }
73 
unsigned int getSndRightWinEdge() const
Definition: DTCPState.cc:142
PDUQ_t * getGeneratedPDUQ()
Definition: DTPState.cc:409
unsigned int getClosedWinQueLen() const
Definition: DTCPState.cc:337
unsigned int getMaxClosedWinQueLen() const
Definition: DTCPState.cc:341
std::vector< DataTransferPDU * > PDUQ_t
void pushBackToPostablePDUQ(DataTransferPDU *pdu)
Definition: DTPState.cc:424
std::vector< DataTransferPDU * > * getClosedWindowQ()
Definition: DTCPState.cc:312
void setClosedWindow(bool closedWindow)
Definition: DTCPState.cc:333
void defaultAction(DTPState *dtpState, DTCPState *dtcpState)