//-------------------------------------------------------------
// file: fifo2.h
// (part of Fifo2 - an OMNeT++ demo simulation)
//-------------------------------------------------------------
#ifndef __FIFO2_H
#define __FIFO2_H
#include <omnetpp.h>
// FF2AbstractFifo : abstract base class for single-server queues
class FF2AbstractFifo : public cSimpleModule
{
public:
Module_Class_Members(FF2AbstractFifo,cSimpleModule,0);
cMessage *msgServiced;
cMessage *endServiceMsg;
cQueue queue;
virtual void initialize();
virtual void handleMessage(cMessage *msg);
// hook functions to (re)define behaviour
virtual void arrival(cMessage *msg) {}
virtual simtime_t startService(cMessage *msg) = 0;
virtual void endService(cMessage *msg) = 0;
};
// FF2PacketFifo : single-server queue with given service time
class FF2PacketFifo : public FF2AbstractFifo
{
public:
Module_Class_Members(FF2PacketFifo,FF2AbstractFifo,0);
virtual simtime_t startService(cMessage *msg);
virtual void endService(cMessage *msg);
};
// FF2BitFifo : single-server queue with service time based on message length
class FF2BitFifo : public FF2AbstractFifo
{
public:
Module_Class_Members(FF2BitFifo,FF2AbstractFifo,0);
virtual simtime_t startService(cMessage *msg);
virtual void endService(cMessage *msg);
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1