//-------------------------------------------------------------
// file: fifo1.h
//        (part of Fifo1 - an OMNeT++ demo simulation)
//-------------------------------------------------------------

#ifndef __FIFO_H
#define __FIFO_H

#include <omnetpp.h>

// FF1AbstractFifo : abstract base class for single-server queues
class FF1AbstractFifo : public cSimpleModule
{
  public:
    Module_Class_Members(FF1AbstractFifo,cSimpleModule,16384);

    cMessage *msgServiced;
    cMessage *endServiceMsg;
    cQueue queue;

    virtual void activity();
    virtual void finish();

    // hook functions to (re)define behaviour
    virtual void arrival(cMessage *msg) {}
    virtual simtime_t startService(cMessage *msg) = 0;
    virtual void endService(cMessage *msg) = 0;
};

// FF1PacketFifo : single-server queue with given service time
class FF1PacketFifo : public FF1AbstractFifo
{
  public:
    Module_Class_Members(FF1PacketFifo,FF1AbstractFifo,16384);

    virtual simtime_t startService(cMessage *msg);
    virtual void endService(cMessage *msg);
};

// FF1BitFifo : single-server queue with service time based on message length
class FF1BitFifo : public FF1AbstractFifo
{
  public:
    Module_Class_Members(FF1BitFifo,FF1AbstractFifo,16384);

    virtual simtime_t startService(cMessage *msg);
    virtual void endService(cMessage *msg);
};

#endif



syntax highlighted by Code2HTML, v. 0.9.1