|
INET Framework for OMNeT++/OMNEST
|
#include <DropTailQoSQueue.h>
Public Member Functions | |
| DropTailQoSQueue () | |
| virtual | ~DropTailQoSQueue () |
Protected Member Functions | |
| virtual void | initialize () |
| virtual bool | enqueue (cMessage *msg) |
| virtual cMessage * | dequeue () |
| virtual void | sendOut (cMessage *msg) |
Protected Attributes | |
| int | frameCapacity |
| int | numQueues |
| cQueue ** | queues |
| IQoSClassifier * | classifier |
| cGate * | outGate |
Drop-front QoS queue. See NED for more info.
| DropTailQoSQueue::~DropTailQoSQueue | ( | ) | [virtual] |
| cMessage * DropTailQoSQueue::dequeue | ( | ) | [protected, virtual] |
Redefined from PassiveQueueBase.
Implements PassiveQueueBase.
| bool DropTailQoSQueue::enqueue | ( | cMessage * | msg | ) | [protected, virtual] |
Redefined from PassiveQueueBase.
Implements PassiveQueueBase.
{
int queueIndex = classifier->classifyPacket(msg);
cQueue *queue = queues[queueIndex];
if (frameCapacity && queue->length() >= frameCapacity)
{
EV << "Queue " << queueIndex << " full, dropping packet.\n";
delete msg;
return true;
}
else
{
queue->insert(msg);
return false;
}
}
| void DropTailQoSQueue::initialize | ( | ) | [protected, virtual] |
Reimplemented from PassiveQueueBase.
{
PassiveQueueBase::initialize();
// configuration
frameCapacity = par("frameCapacity");
const char *classifierClass = par("classifierClass");
classifier = check_and_cast<IQoSClassifier *>(createOne(classifierClass));
outGate = gate("out");
numQueues = classifier->getNumQueues();
queues = new cQueue *[numQueues];
for (int i=0; i<numQueues; i++)
{
char buf[32];
sprintf(buf, "queue-%d", i);
queues[i] = new cQueue(buf);
}
}
| void DropTailQoSQueue::sendOut | ( | cMessage * | msg | ) | [protected, virtual] |
IQoSClassifier* DropTailQoSQueue::classifier [protected] |
Referenced by enqueue(), and initialize().
int DropTailQoSQueue::frameCapacity [protected] |
Referenced by enqueue(), and initialize().
int DropTailQoSQueue::numQueues [protected] |
Referenced by dequeue(), DropTailQoSQueue(), initialize(), and ~DropTailQoSQueue().
cGate* DropTailQoSQueue::outGate [protected] |
Referenced by initialize(), and sendOut().
cQueue** DropTailQoSQueue::queues [protected] |
Referenced by dequeue(), DropTailQoSQueue(), enqueue(), initialize(), and ~DropTailQoSQueue().