--- a/src/DIF/RA/RAListeners.cc
+++ b/src/DIF/RA/RAListeners.cc
@@ -17,7 +17,6 @@
#include <RAListeners.h>
-#include "RMTQueue.h"
RAListeners::RAListeners(RABase* nra) : ra(nra)
{
@@ -44,7 +43,7 @@
void LisRAAllocResPos::receiveSignal(cComponent* src, simsignal_t id, cObject* obj)
{
Flow* flow = dynamic_cast<Flow*>(obj);
- if (flow)
+ if (flow && !flow->isDdtFlag())
{
ra->postNFlowAllocation(flow);
}
@@ -58,7 +57,7 @@
void LisRACreAllocResPos::receiveSignal(cComponent* src, simsignal_t id, cObject* obj)
{
Flow* flow = dynamic_cast<Flow*>(obj);
- if (flow)
+ if (flow && !flow->isDdtFlag())
{
ra->postNFlowAllocation(flow);
}
@@ -71,50 +70,40 @@
void LisRACreResPosi::receiveSignal(cComponent* src, simsignal_t id, cObject* obj)
{
Flow* flow = dynamic_cast<Flow*>(obj);
- if (flow)
+ const APN& dstApn = flow->getDstApni().getApn();
+ unsigned short qosId = flow->getConId().getQoSId();
+
+ NM1FlowTableItem* item = ra->getFlowTable()->findFlowByDstApni(dstApn.getName(), qosId);
+ if (item != NULL)
{
- ra->postNM1FlowAllocation(flow);
+ ra->postNM1FlowAllocation(item);
}
else
{
- EV << "RAListener received unknown object!" << endl;
+ return;
}
}
void LisEFCPStopSending::receiveSignal(cComponent* src, simsignal_t id, cObject* obj)
{
Flow* flow = dynamic_cast<Flow*>(obj);
- if (flow)
+ NM1FlowTableItem* item = ra->getFlowTable()->lookup(flow);
+
+ if (item)
{
- ra->blockNM1PortOutput(flow);
- }
- else
- {
- EV << "RAListener received unknown object!" << endl;
+ ra->blockNM1PortOutput(item);
}
}
void LisEFCPStartSending::receiveSignal(cComponent* src, simsignal_t id, cObject* obj)
{
Flow* flow = dynamic_cast<Flow*>(obj);
- if (flow)
+ NM1FlowTableItem* item = ra->getFlowTable()->lookup(flow);
+
+ if (item)
{
- ra->unblockNM1PortOutput(flow);
+ ra->unblockNM1PortOutput(item);
}
- else
- {
- EV << "RAListener received unknown object!" << endl;
- }
-}
-
-void LisRMTPortDrainDisable::receiveSignal(cComponent* src, simsignal_t id, cObject* obj)
-{
- ra->blockNM1PortInput(obj);
-}
-
-void LisRMTPortDrainEnable::receiveSignal(cComponent* src, simsignal_t id, cObject* obj)
-{
- ra->unblockNM1PortInput(obj);
}
void LisRMTSlowdownRequest::receiveSignal(cComponent* src, simsignal_t id, cObject* obj)