DropTailQoSQueue Class Reference

#include <DropTailQoSQueue.h>

Inheritance diagram for DropTailQoSQueue:

PassiveQueueBase IPassiveQueue List of all members.

Detailed Description

Drop-tail QoS queue. See NED for more info.


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
IQoSClassifierclassifier


Constructor & Destructor Documentation

DropTailQoSQueue::DropTailQoSQueue (  ) 

00027 {
00028     queues = NULL;
00029     numQueues = NULL;
00030 }

DropTailQoSQueue::~DropTailQoSQueue (  )  [virtual]

00033 {
00034     for (int i=0; i<numQueues; i++)
00035         delete queues[i];
00036     delete [] queues;
00037 }


Member Function Documentation

cMessage * DropTailQoSQueue::dequeue (  )  [protected, virtual]

Redefined from PassiveQueueBase.

Implements PassiveQueueBase.

00078 {
00079     // queue 0 is highest priority
00080     for (int i=0; i<numQueues; i++)
00081         if (!queues[i]->empty())
00082             return (cMessage *)queues[i]->pop();
00083     return NULL;
00084 }

bool DropTailQoSQueue::enqueue ( cMessage *  msg  )  [protected, virtual]

Redefined from PassiveQueueBase.

Implements PassiveQueueBase.

00060 {
00061     int queueIndex = classifier->classifyPacket(msg);
00062     cQueue *queue = queues[queueIndex];
00063 
00064     if (frameCapacity && queue->length() >= frameCapacity)
00065     {
00066         EV << "Queue " << queueIndex << " full, dropping packet.\n";
00067         delete msg;
00068         return true;
00069     }
00070     else
00071     {
00072         queue->insert(msg);
00073         return false;
00074     }
00075 }

void DropTailQoSQueue::initialize (  )  [protected, virtual]

Reimplemented from PassiveQueueBase.

00040 {
00041     PassiveQueueBase::initialize();
00042 
00043     // configuration
00044     frameCapacity = par("frameCapacity");
00045 
00046     const char *classifierClass = par("classifierClass");
00047     classifier = check_and_cast<IQoSClassifier *>(createOne(classifierClass));
00048 
00049     numQueues = classifier->numQueues();
00050     queues = new cQueue *[numQueues];
00051     for (int i=0; i<numQueues; i++)
00052     {
00053         char buf[32];
00054         sprintf(buf, "queue-%d", i);
00055         queues[i] = new cQueue(buf);
00056     }
00057 }

void DropTailQoSQueue::sendOut ( cMessage *  msg  )  [protected, virtual]

Redefined from PassiveQueueBase.

Implements PassiveQueueBase.

00087 {
00088     send(msg, "out");
00089 }


Member Data Documentation

IQoSClassifier* DropTailQoSQueue::classifier [protected]

int DropTailQoSQueue::frameCapacity [protected]

int DropTailQoSQueue::numQueues [protected]

cQueue** DropTailQoSQueue::queues [protected]


The documentation for this class was generated from the following files:
Generated on Wed Apr 4 13:20:19 2007 for INET Framework for OMNeT++/OMNEST by  doxygen 1.4.7