#include <QueueWithQoS.h>
Leaves the endService(cMessage *msg) method of AbstractQueue undefined.
Public Member Functions | |
QueueWithQoS () | |
Protected Member Functions | |
virtual void | initialize () |
virtual void | arrival (cPacket *msg) |
virtual cPacket * | arrivalWhenIdle (cPacket *msg) |
virtual simtime_t | startService (cPacket *msg) |
Protected Attributes | |
simtime_t | delay |
EnqueueHook * | qosHook |
void QueueWithQoS::initialize | ( | ) | [protected, virtual] |
Reimplemented from AbstractQueue.
00023 { 00024 AbstractQueue::initialize(); 00025 00026 delay = par("procDelay"); 00027 qosHook = check_and_cast<EnqueueHook *>(createOne(par("qosBehaviorClass"))); 00028 qosHook->setModule(this); 00029 }
void QueueWithQoS::arrival | ( | cPacket * | msg | ) | [protected, virtual] |
Functions to (re)define behaviour 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.
cPacket * QueueWithQoS::arrivalWhenIdle | ( | cPacket * | 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:
Most straightforward implementation: return msg;
Implements AbstractQueue.
00038 { 00039 return PK(qosHook->dropIfNotNeeded(msg)); 00040 }
simtime_t QueueWithQoS::startService | ( | cPacket * | msg | ) | [protected, virtual] |
Called when a message starts service, and should return the service time.
Example implementation: return 1.0;
Implements AbstractQueue.
00043 { 00044 return delay; 00045 }
simtime_t QueueWithQoS::delay [protected] |
Referenced by initialize(), and startService().
EnqueueHook* QueueWithQoS::qosHook [protected] |
Referenced by arrival(), arrivalWhenIdle(), and initialize().