--- a/src/DIF/RMT/RMTQueue.cc
+++ b/src/DIF/RMT/RMTQueue.cc
@@ -36,7 +36,8 @@
size_t pduCount = queue.size();
if (pduCount)
{
- EV << "This queue still contains " << pduCount << " unprocessed PDUs!" << endl;
+ EV << "Queue " << getFullPath() << " still contains " << pduCount
+ << " unprocessed PDUs!" << endl;
for (iterator it = begin(); it != end(); ++it)
{
@@ -53,6 +54,8 @@
inputGate = gate("inputGate");
// message retrieval signal handler
sigRMTPDURcvd = registerSignal(SIG_RMT_QueuePDURcvd);
+ // message pre-departure signal handler
+ sigRMTPDUPreSend = registerSignal(SIG_RMT_QueuePDUPreSend);
// message departure signal handler
sigRMTPDUSent = registerSignal(SIG_RMT_QueuePDUSent);
// length for vector stats
@@ -102,15 +105,15 @@
}
else if (len < thresholdQLength)
{
- disp.setTagArg("i", 1, getParentModule()->getParentModule()->par("queueColorBusy").stringValue());
+ disp.setTagArg("i", 1, "#80FF80");
}
else if (len < maxQLength)
{
- disp.setTagArg("i", 1, getParentModule()->getParentModule()->par("queueColorWarn").stringValue());
+ disp.setTagArg("i", 1, "#FF8000");
}
else
{
- disp.setTagArg("i", 1, getParentModule()->getParentModule()->par("queueColorFull").stringValue());
+ disp.setTagArg("i", 1, "#800000");
}
// print current saturation in numbers
@@ -146,6 +149,7 @@
if (this->getLength() > 0)
{
+ emit(sigRMTPDUPreSend, this);
cPacket* pdu = queue.front();
queue.pop_front();
send(pdu, outputGate);