76 if (std::string(par(name).stringValue()).empty())
80 std::stringstream moduleName;
81 moduleName << prefix << par(name).stringValue();
82 cModuleType* policyType = cModuleType::get(moduleName.str().c_str());
83 return policyType->createScheduleInit(name, getParentModule());
109 Enter_Method_Silent();
119 Enter_Method(
"initialize");
121 cDisplayString& disp = getDisplayString();
122 disp.setTagArg(
"p", 0, 340);
123 disp.setTagArg(
"p", 1, 140);
154 Enter_Method_Silent(
"ECNPolicy");
170 Enter_Method_Silent(
"RcvrFCPolicy");
177 Enter_Method_Silent(
"RcvrAckPolicy");
184 Enter_Method_Silent(
"ReceivingFCPolicy");
194 Enter_Method_Silent(
"SendingAckPolicy");
202 Enter_Method_Silent(
"LostControlPDUPolicy");
210 Enter_Method_Silent(
"RcvrControlAckPolicy");
218 Enter_Method_Silent(
"SenderAckPolicy");
227 Enter_Method_Silent(
"SndFCOverrunPolicy");
235 Enter_Method_Silent(
"RcvFCOverrunPolicy");
242 Enter_Method_Silent(
"NoOverridePeakPolicy");
251 Enter_Method_Silent(
"TxControlPolicy");
259 Enter_Method_Silent(
"NoRateSlowDownPolicy");
267 Enter_Method_Silent(
"ReconcileFCPolicy");
275 Enter_Method_Silent(
"RateReductionPolicy");
285 Enter_Method_Silent(
"ECNSlowDownPolicy");
294 Enter_Method_Silent();
296 bool startTrue =
false;
299 endSeqNum = startSeqNum;
303 std::vector<DTCPRxExpiryTimer*>::iterator it;
304 unsigned int lastLen;
305 lastLen = rxQ->size();
306 for (
unsigned int index = 0; index < rxQ->size(); )
309 unsigned int seqNum = (timer->
getPdu())->getSeqNum();
311 if (seqNum >= startSeqNum && (seqNum <= endSeqNum || startTrue) )
316 if(lastLen != rxQ->size()){
326 std::vector<DTCPRxExpiryTimer*>::iterator it;
327 for (it = rxQ->begin(); it != rxQ->end();) {
328 if (seqNum == (*it)->getPdu()->getSeqNum()) {
329 delete (*it)->getPdu();
343 Enter_Method_Silent();
344 bool startTrue =
false;
347 endSeqNum = startSeqNum;
352 std::vector<DTCPRxExpiryTimer*>::iterator it;
354 for (
unsigned int index = 0; index < rxQ->size(); )
357 unsigned int seqNum =(timer->
getPdu())->getSeqNum();
359 if ((seqNum >= startSeqNum || startTrue) && seqNum <= endSeqNum)
392 Enter_Method_Silent();
402 Enter_Method_Silent();
412 Enter_Method_Silent();
419 rxExpTimer->
setSent(simTime().dbl());
439 std::vector<DTCPRxExpiryTimer*>::iterator it;
440 for (it = rxQ->begin(); it != rxQ->end(); ++it)
442 if (!(*it)->isScheduled())
474 Enter_Method_Silent();
483 if(msg->isSelfMessage()){
621 Enter_Method_Silent();
622 if (!getEnvir()->isGUI())
627 cDisplayString& disp = getDisplayString();
628 disp.setTagArg(
"t", 1,
"r");
629 std::ostringstream desc;
641 desc <<
"RxQ: empty" <<
"\n";
646 std::vector<DTCPRxExpiryTimer*>::iterator it;
647 for (it = rxQ->begin(); it != rxQ->end(); ++it)
649 desc << (*it)->getPdu()->getSeqNum() <<
" | ";
657 desc <<
"closedWinQ: empty" <<
"\n";
661 desc <<
"closedWinQ: ";
662 std::vector<DataTransferPDU*>::iterator it;
663 std::vector<DataTransferPDU*>* pduQ;
665 for (it = pduQ->begin(); it != pduQ->end(); ++it)
667 desc << (*it)->getSeqNum() <<
" | ";
676 disp.setTagArg(
"t", 0, desc.str().c_str());
bool runSenderAckPolicy(DTPState *dtpState)
NoOverridePeakPolicyBase * noOverridePeakPolicy
void setSenderLeftWinEdge(unsigned int senderLeftWinEdge)
void setSndFcOverrunPolicy(SndFCOverrunPolicyBase *sndFcOverrunPolicy)
SendingAckPolicyBase * sendingAckPolicy
virtual int getType() const
RcvFCOverrunPolicyBase * rcvFcOverrunPolicy
RTTEstimatorPolicyBase * rttEstimatorPolicy
SndFCOverrunPolicyBase * sndFcOverrunPolicy
void pushBackToRxQ(DTCPRxExpiryTimer *timer)
unsigned int getDupFC() const
void ackPDU(unsigned int startSeqNum, unsigned int endSeqNum=0)
void updateSenderLWE(unsigned int seqNum)
unsigned int getDupFC() const
void setRcvrControlAckPolicy(RcvrControlAckPolicyBase *rcvrControlAckPolicy)
unsigned int getPdusRcvdInTimeUnit() const
unsigned int getRxSent() const
unsigned int getDataReXmitMax() const
void setSendingAckPolicy(SendingAckPolicyBase *sendingAckPolicy)
void setSenderRightWinEdge(unsigned int senderRightWinEdge)
bool isClosedWinQClosed()
cModule * createPolicyModule(const char *prefix, const char *name)
void setRcvRtWinEdge(unsigned int rcvRtWinEdge)
RcvrControlAckPolicyBase * rcvrControlAckPolicy
RateReductionPolicyBase * rateReductionPolicy
void startReliableCPDUTimer()
void setSendingRateFullfilled(bool sendingRateFullfilled)
void handleRendezvousTimer(DTCPRendezvousTimer *rendezTimer)
unsigned int getSendingRate() const
virtual bool call(DTPState *dtpState, DTCPState *dtcpState)
void rendezvousCondition()
unsigned int getPdusSentInTimeUnit() const
const char * SIG_STAT_DTCP_RX_SENT
bool runRateReductionPolicy(DTPState *dtpState)
void setLastCtrlSeqNumRcv(unsigned int ctrlSeqNum)
unsigned int getNextSndCtrlSeqNum()
bool runRcvrAckPolicy(DTPState *dtpState)
void setSendingRate(unsigned int sendingRate)
unsigned int getSndRightWinEdge() const
bool runTxControlPolicy(DTPState *dtpState, PDUQ_t *pduQ)
bool runECNPolicy(DTPState *dtpState)
bool isSendingRateFullfilled() const
bool runRcvrControlAckPolicy(DTPState *dtpState)
unsigned int getPdusSentInTimeUnit() const
void setSenderLeftWinEdge(unsigned int senderLeftWinEdge)
unsigned int getDupAcks() const
void updateRcvRtWinEdge(DTPState *dtpState)
virtual void setPdu(const DTPDU_p &pdu)
unsigned int getClosedWinQueLen() const
void setNoOverridePeakPolicy(NoOverridePeakPolicyBase *noOverridePeakPolicy)
virtual DTPDU_p & getPdu()
void setPdusSentInTimeUnit(unsigned int pdusSentInTimeUnit)
virtual void setSent(double sent)
unsigned long getSendingTimeUnit()
void setReliableCpduTimer(DTCPReliableControlPDUTimer *reliableCpduTimer)
void setRcvrAckPolicy(RcvrAckPolicyBase *rcvrAckPolicy)
void setPdusSentInTimeUnit(unsigned int pdusSentInTimeUnit)
unsigned int getSendingRate() const
ECNSlowDownPolicyBase * ecnSlowDownPolicy
unsigned int getLastControlSeqNumSent() const
unsigned int getRcvCredit()
unsigned int getSndRtWinEdge()
void setECNSlowDownPolicy(ECNSlowDownPolicyBase *ecnSlowDownPolicy)
void setRxTimerExpiryPolicy(RxTimerExpiryPolicyBase *rxTimerExpiryPolicy)
void setRateReductionPolicy(RateReductionPolicyBase *rateReductionPolicy)
unsigned int getRcvLeftWinEdge() const
bool runRcvrFCPolicy(DTPState *dtpState)
bool runReceivingFCPolicy(DTPState *dtpState)
RcvrAckPolicyBase * rcvrAckPolicy
void setSendingRateFullfilled(bool rateFullfilled)
std::vector< DataTransferPDU * > PDUQ_t
void setRcvRtWinEdge(unsigned int rcvRtWinEdge)
void stopReliableCPDUTimer()
void setSendingRate(unsigned int sendingRate)
void setRcvrFcPolicy(RcvrFCPolicyBase *rcvrFcPolicy)
unsigned int getPdusRcvdInTimeUnit() const
DTCPReliableControlPDUTimer * getReliableCpduTimer()
unsigned int getRcvRightWinEdge() const
void setECNPolicy(ECNPolicyBase *ecnPolicy)
unsigned int getSndLeftWinEdge() const
bool runLostControlPDUPolicy(DTPState *dtpState)
bool runSendingAckPolicy(DTPState *dtpState, ATimer *timer)
unsigned int getRcvrRate() const
bool isSendingRateFullfilled() const
void updateSndLWE(unsigned int seqNum)
void sendAckFlowPDU(unsigned int seqNum=0, bool seqNumValid=false)
unsigned int getSndLeftWinEdge() const
void setTxControlPolicy(TxControlPolicyBase *txControlPolicy)
unsigned int getLastCtrlSeqNumRcv()
unsigned int getRcvRightWinEdge()
virtual void setCounter(unsigned int counter)
void scheduleRxTimerExpiry()
void setReceivingFcPolicy(ReceivingFCPolicyBase *receivingFcPolicy)
bool runReconcileFCPolicy(DTPState *dtpState)
RcvrFCPolicyBase * rcvrFCPolicy
unsigned int getDataReXmitMax() const
std::vector< DTCPRxExpiryTimer * > * getRxQ()
unsigned int getRcvrRate() const
void incPdusSentInTimeUnit()
simsignal_t sigStatDTCPRxCount
bool runNoRateSlowDownPolicy(DTPState *dtpState)
DTCPState * getDTCPState() const
void deleteRxTimer(unsigned int seqNum)
void setSndRtWinEdge(unsigned int sndRtWinEdge)
RxTimerExpiryPolicyBase * rxTimerExpiryPolicy
std::vector< DataTransferPDU * > * getClosedWindowQ()
virtual unsigned int getExpiryCount() const
void setReconcileFcPolicy(ReconcileFCPolicyBase *reconcileFcPolicy)
void nackPDU(unsigned int startSeqNum, unsigned int endSeqNum=0)
void setRendezvousTimer(DTCPRendezvousTimer *rendezvousTimer)
void startRendezvousTimer()
unsigned int getNextSndCtrlSeqNum()
void setSenderAckPolicy(SenderAckPolicyBase *senderAckPolicy)
unsigned int getDupAcks() const
ReconcileFCPolicyBase * reconcileFCPolicy
ReceivingFCPolicyBase * receivingFCPolicy
void runRxTimerExpiryPolicy(DTCPRxExpiryTimer *timer)
SenderAckPolicyBase * senderAckPolicy
bool runNoOverridePeakPolicy(DTPState *dtpState)
void setRcvFcOverrunPolicy(RcvFCOverrunPolicyBase *rcvFcOverrunPolicy)
void setLastCtrlSeqnumRcvd(unsigned int ctrlSeqNum)
void pushBackToRxQ(DataTransferPDU *pdu)
void setNoRateSlowDownPolicy(NoRateSlowDownPolicyBase *noRateSlowDownPolicy)
void flushAllQueuesAndPrepareToDie()
virtual void setSeqNum(unsigned int seqNum)
TxControlPolicyBase * txControlPolicy
bool isClosedWinQClosed() const
ECNPolicyBase * ecnPolicy
unsigned int getLastCtrlSeqNumRcv()
void schedule(DTCPTimers *timer, double time=0.0)
void setDtcpState(DTCPState *dtcpState)
NoRateSlowDownPolicyBase * noRateSlowDownPolicy
bool runSndFCOverrunPolicy(DTPState *dtpState)
unsigned long getTimeUnit() const
LostControlPDUPolicyBase * lostControlPDUPolicy
bool runRcvFCOverrunPolicy(DTPState *dtpState)
virtual void handleMessage(cMessage *msg)
void setLostControlPduPolicy(LostControlPDUPolicyBase *lostControlPduPolicy)
unsigned int getRcvCredit() const
unsigned long getSendingTimeUnit() const
bool runECNSlowDownPolicy(DTPState *dtpState)
void handleSendingRateTimer(DTCPSendingRateTimer *timer)
void updateRcvRtWinEdge(unsigned int rcvLtWinEdge)
void handleDTCPRxExpiryTimer(DTCPRxExpiryTimer *timer)
void initSignalsAndListeners()
virtual void initialize(int step)