// // fifo1.h // // This file is part of an OMNeT++/OMNEST demo simulation. // #ifndef __FIFO_H #define __FIFO_H #include <omnetpp.h> using namespace omnetpp; /** * FF1AbstractFifo : abstract base class for single-server queues */ class FF1AbstractFifo : public cSimpleModule { public: FF1AbstractFifo() : cSimpleModule(16384) {} cMessage *msgServiced; cMessage *endServiceMsg; cQueue queue; virtual void activity() override; virtual void finish() override; // 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: FF1PacketFifo() {} virtual simtime_t startService(cMessage *msg) override; virtual void endService(cMessage *msg) override; }; /** * FF1BitFifo : single-server queue with service time based on message length */ class FF1BitFifo : public FF1AbstractFifo { public: FF1BitFifo() {} virtual simtime_t startService(cMessage *msg) override; virtual void endService(cMessage *msg) override; }; #endif