|
a |
|
b/src/DIF/RMT/policies/maxqueue/ECNMarker.cc |
|
|
1 |
/*
|
|
|
2 |
* ECNMarker.cpp
|
|
|
3 |
*
|
|
|
4 |
* Created on: 15. 11. 2014
|
|
|
5 |
* Author: cloq
|
|
|
6 |
*/
|
|
|
7 |
|
|
|
8 |
#include <ECNMarker.h>
|
|
|
9 |
|
|
|
10 |
Define_Module(ECNMarker);
|
|
|
11 |
|
|
|
12 |
void ECNMarker::run(RMTQueue* queue)
|
|
|
13 |
{
|
|
|
14 |
if (queue->getLength() > queue->getMaxLength())
|
|
|
15 |
{
|
|
|
16 |
EV << "ECNMarker: dropping message for queue " << queue->getName() << "!" << endl;
|
|
|
17 |
queue->dropLast();
|
|
|
18 |
}
|
|
|
19 |
else
|
|
|
20 |
{
|
|
|
21 |
EV << "ECNMarker: marking the last message in queue " << queue->getName() << "!" << endl;
|
|
|
22 |
queue->markCongestionOnLast();
|
|
|
23 |
}
|
|
|
24 |
}
|
|
|
25 |
|