Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

PassiveQueueBase Class Reference

#include <PassiveQueueBase.h>

Inheritance diagram for PassiveQueueBase:

IPassiveQueue DropTailQoSQueue DropTailQueue REDQueue List of all members.

Detailed Description

Abstract base class for passive queues. Implements IPassiveQueue. Enqueue/dequeue has to be implemented in virtual functions in subclasses; the actual queue or piority queue data structure also goes into subclasses.


Protected Member Functions

virtual void initialize ()
virtual void handleMessage (cMessage *msg)
virtual void finish ()
virtual bool enqueue (cMessage *msg)=0
virtual cMessage * dequeue ()=0
virtual void requestPacket ()

Protected Attributes

int packetRequested
int numReceived
int numDropped


Member Function Documentation

virtual cMessage* PassiveQueueBase::dequeue  )  [protected, pure virtual]
 

Returns a packet from the queue, or NULL if the queue is empty.

Implemented in DropTailQoSQueue, DropTailQueue, and REDQueue.

virtual bool PassiveQueueBase::enqueue cMessage *  msg  )  [protected, pure virtual]
 

Inserts packet into the queue or the priority queue, or drops it (or another packet). Returns true if a packet was dropped.

Implemented in DropTailQoSQueue, DropTailQueue, and REDQueue.

void PassiveQueueBase::finish  )  [protected, virtual]
 

Reimplemented in REDQueue.

00075 {
00076     recordScalar("packets received", numReceived);
00077     recordScalar("packets dropped", numDropped);
00078 }

void PassiveQueueBase::handleMessage cMessage *  msg  )  [protected, virtual]
 

00037 {
00038     numReceived++;
00039     if (packetRequested>0)
00040     {
00041         packetRequested--;
00042         send(msg, "out");
00043     }
00044     else
00045     {
00046         bool dropped = enqueue(msg);
00047         if (dropped)
00048             numDropped++;
00049     }
00050 
00051     if (ev.isGUI())
00052     {
00053         char buf[40];
00054         sprintf(buf, "rcvd: %d pks\ndropped: %d pks", numReceived, numDropped);
00055         displayString().setTagArg("t",0,buf);
00056     }
00057 }

void PassiveQueueBase::initialize  )  [protected, virtual]
 

Reimplemented in DropTailQoSQueue, DropTailQueue, and REDQueue.

00025 {
00026     // state
00027     packetRequested = 0;
00028 
00029     // statistics
00030     numReceived = 0;
00031     numDropped = 0;
00032     WATCH(numReceived);
00033     WATCH(numDropped);
00034 }

void PassiveQueueBase::requestPacket  )  [protected, virtual]
 

The queue should send a packet whenever this method is invoked. If the queue is currently empty, it should send a packet when when one becomes available.

Implements IPassiveQueue.

00060 {
00061     Enter_Method("requestPacket()");
00062 
00063     cMessage *msg = dequeue();
00064     if (msg==NULL)
00065     {
00066         packetRequested++;
00067     }
00068     else
00069     {
00070         send(msg, "out");
00071     }
00072 }


Member Data Documentation

int PassiveQueueBase::numDropped [protected]
 

int PassiveQueueBase::numReceived [protected]
 

int PassiveQueueBase::packetRequested [protected]
 


The documentation for this class was generated from the following files:
Generated on Sat Apr 1 20:52:23 2006 for INET Framework for OMNeT++/OMNEST by  doxygen 1.4.1