Public Member Functions | Protected Member Functions | Protected Attributes

DropTailQoSQueue Class Reference

#include <DropTailQoSQueue.h>

Inheritance diagram for DropTailQoSQueue:
PassiveQueueBase IPassiveQueue

List of all members.

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
cGate * outGate

Detailed Description

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

Definition at line 29 of file DropTailQoSQueue.h.


Constructor & Destructor Documentation

DropTailQoSQueue::DropTailQoSQueue (  ) 

Definition at line 25 of file DropTailQoSQueue.cc.

{
    queues = NULL;
    numQueues = NULL;
}

DropTailQoSQueue::~DropTailQoSQueue (  )  [virtual]

Definition at line 31 of file DropTailQoSQueue.cc.

{
    for (int i=0; i<numQueues; i++)
        delete queues[i];
    delete [] queues;
}


Member Function Documentation

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

Redefined from PassiveQueueBase.

Implements PassiveQueueBase.

Definition at line 78 of file DropTailQoSQueue.cc.

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

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

Redefined from PassiveQueueBase.

Implements PassiveQueueBase.

Definition at line 60 of file DropTailQoSQueue.cc.

{
    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.

Definition at line 38 of file DropTailQoSQueue.cc.

{
    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]

Redefined from PassiveQueueBase.

Implements PassiveQueueBase.

Definition at line 87 of file DropTailQoSQueue.cc.

{
    send(msg, outGate);
}


Member Data Documentation

Definition at line 38 of file DropTailQoSQueue.h.

Referenced by enqueue(), and initialize().

Definition at line 33 of file DropTailQoSQueue.h.

Referenced by enqueue(), and initialize().

int DropTailQoSQueue::numQueues [protected]

Definition at line 36 of file DropTailQoSQueue.h.

Referenced by dequeue(), DropTailQoSQueue(), initialize(), and ~DropTailQoSQueue().

cGate* DropTailQoSQueue::outGate [protected]

Definition at line 40 of file DropTailQoSQueue.h.

Referenced by initialize(), and sendOut().

cQueue** DropTailQoSQueue::queues [protected]

Definition at line 37 of file DropTailQoSQueue.h.

Referenced by dequeue(), DropTailQoSQueue(), enqueue(), initialize(), and ~DropTailQoSQueue().


The documentation for this class was generated from the following files: