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

QueueWithQoS Class Reference

#include <QueueWithQoS.h>

Inheritance diagram for QueueWithQoS:

AbstractQueue List of all members.

Detailed Description

Queue with constant processing time, with integrated QoS behaviour. Processing time is taken from the "procDelay" module parameter, and QoS class from the "qosBehaviourClass" module parameter.

Leaves the endService(cMessage *msg) method of AbstractQueue undefined.


Public Member Functions

 QueueWithQoS ()

Protected Member Functions

virtual void initialize ()
virtual void arrival (cMessage *msg)
virtual cMessage * arrivalWhenIdle (cMessage *msg)
virtual simtime_t startService (cMessage *msg)

Protected Attributes

simtime_t delay
EnqueueHookqosHook


Constructor & Destructor Documentation

QueueWithQoS::QueueWithQoS  )  [inline]
 

00043 {}


Member Function Documentation

void QueueWithQoS::arrival cMessage *  msg  )  [protected, virtual]
 

Called when a message arrives at the module. The method should either enqueue this message (usual behaviour), or discard it. It may also wrap the it into another message, and insert that one in the queue.

Most straightforward implementation: queue.insert(msg);

Implements AbstractQueue.

00034 {
00035     qosHook->enqueue(msg, queue);
00036 }

cMessage * QueueWithQoS::arrivalWhenIdle cMessage *  msg  )  [protected, virtual]
 

Called when a message arrives at the module when the queue is empty. The message doesn't need to be enqueued in this case, it can start service immmediately. This method may:

  1. simply return the the same pointer (usual behaviour), or
  2. discard the message and return NULL pointer (the effect being this message being ignored)
  3. or modify the message, wrap in into another message etc, and return the (new) message's pointer.

Most straightforward implementation: return msg;

Implements AbstractQueue.

00039 {
00040     return qosHook->dropIfNotNeeded(msg);
00041 }

void QueueWithQoS::initialize  )  [protected, virtual]
 

Reimplemented from AbstractQueue.

00024 {
00025     AbstractQueue::initialize();
00026 
00027     delay = par("procDelay");
00028     qosHook = check_and_cast<EnqueueHook *>(createOne(par("qosBehaviorClass")));
00029     qosHook->setModule(this);
00030 }

simtime_t QueueWithQoS::startService cMessage *  msg  )  [protected, virtual]
 

Called when a message starts service, and should return the service time.

Example implementation: return 1.0;

Implements AbstractQueue.

00044 {
00045     return delay;
00046 }


Member Data Documentation

simtime_t QueueWithQoS::delay [protected]
 

EnqueueHook* QueueWithQoS::qosHook [protected]
 


The documentation for this class was generated from the following files:
Generated on Thu Oct 19 18:22:27 2006 for INET Framework for OMNeT++/OMNEST by  doxygen 1.4.0